连接Firestore到expo管理的React Native应用程序



我正在尝试连接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答案,因为我没有自己想出这个,但我找不到它。如果我这样做,我会编辑这篇文章,并附上链接。

编辑:找到了。信贷。

最新更新