我正在尝试连接Firestore (v 9.6.7)到我的应用程序。我使用web 9语法。我的代码几乎直接来自这里的指南。
它看起来像:
import { initializeApp } from 'firebase/app';
import { getFirestore } from 'firebase/firestore';
import { collection, getDocs } from "firebase/firestore";
// Initialize Firebase
const firebaseConfig = {
apiKey: ...
authDomain: ...,
projectId: ...,
storageBucket: ...,
messagingSenderId:...,
appId: ...,
measurementId: ...
};
// Initialize Firebase
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);
// Read collection from Firestore and print it
const querySnapshot = getDocs(collection(db, "Users"));
console.log(querySnapshot);
export {
db
}
返回的承诺是:
{承诺"_U" 0,"_V" 0,"_W"空,"_X"空,}
怎么了?
谢谢。
朋友,当我告诉你我连续挣扎了两天,我是指连续两天8小时。
答案在firebase的源代码中。
您需要做的第一件事是将metro.config.js
文件添加到项目的根目录。在里面添加以下内容:
const { getDefaultConfig } = require("metro-config");
const { resolver: defaultResolver } = getDefaultConfig.getDefaultValues();
exports.resolver = {
...defaultResolver,
sourceExts: [
...defaultResolver.sourceExts,
"cjs",
],
};
允许"cjs"源扩展。
另一种打印firestore集合的好方法如下:
const db = getFirestore()
const colRef = collection(db, "collection")
getDocs(colRef)
.then((snapshot) => {
let collection = []
snapshot.docs.forEach((doc) => {
collection.push({...doc.data(), id: doc.id })
})
})
这是一个很好的方式,以更友好的方式打印到控制台。
试试这个,看看它是否有效。如果没有,请评论,这样我可以进一步帮助。
我想标记metro.config.js文件的原始stackoverflow答案,因为我没有自己想出这个,但我找不到它。如果我这样做,我会编辑这篇文章,并附上链接。
编辑:找到了。信贷。