React Native:firestore/firebase 预期 collection() 的第一个参数是 CollectionReference...怎么样?

2023-12-04

因此,我有一个简单的 React Native 应用程序,它是我使用 Expo 创建的,并在我的个人 Android 设备上进行调试。

我已将 firebase/firestore 包含到我的应用程序中,现在尝试在单击按钮时将对象添加到 firestore 。

这是我的代码:

firebaseConfig.js :

import { initializeApp } from '@firebase/app';

var config = {
    ...
}
  
const app = initializeApp(config);

export default app;

成分:

从 '../firebaseConfig' 导入 { app } ; 从 'firebase/firestore/lite' 导入 { getFirestore }; 从“firebase/firestore”导入{ doc、setDoc、collection、query、where、getDocs、initializeFirestore }; ...

导出默认函数 Component() { const firestoreDb = getFirestore(app);

// this function is called when clicking a button
const onAddListPress = () => {
    setDoc(doc(firestoreDb, "cities", "LA"), {
        name: "Los Angeles",
        state: "CA",
        country: "USA"
    });
}

}

这会引发以下错误:

Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore

上面的代码(在 onPress 中)是从官方 firestore 文档复制的,此处:https://firebase.google.com/docs/firestore/manage-data/add-data#set_a_document

有谁知道为什么这不起作用?


我建议你编辑你的帖子并删除firebaseConfig配置密钥,或者删除您的 Firebase 应用并从 Firebase 控制台创建一个新应用以保护您的应用。我尝试使用 React 复制您的应用程序,但收到了相同的错误消息。我做了两项更改来纠正错误。第一个是在里面firebaseConfig file,需要将默认导出更改为命名导出:

import { initializeApp } from "firebase/app"

const firebaseConfig = {
    //Project configuration keys
};

const app = initializeApp(firebaseConfig);

export { app }; // Change from a default to a named export

此外,组件内的所有导入都应来自完整的 Javascript SDK,而不是精简版本。精简版有一些局限性这可能会导致这个specific error.

import { app } from "./firestore-config";
import { getFirestore, getDoc, doc } from "firebase/firestore";
import './App.css';

export default function App() {
  const firestoreDB = getFirestore(app);
  const docRef = doc(firestoreDB, "users", "testUser1");

  const getData = async () => {
    const data = await getDoc(docRef);
    console.log(data);
  }

  getData();
  return <div className="App"></div>;
}

您可能还想查看此 GitHubissue如果您使用纱线来管理您的依赖项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native:firestore/firebase 预期 collection() 的第一个参数是 CollectionReference...怎么样? 的相关文章