【问题标题】:db.collection("articles").add results in ".default.collection is not a function"db.collection("articles").add 导致“.default.collection 不是函数”
【发布时间】:2022-01-14 19:24:22
【问题描述】:

基本上我想添加一个名为“articles”的集合,其中包含以下演员并将其存储在 firebase 中。

我按照uploading 文件的文档到firebase。我正在阅读有关 adding 数据到 firebase 的文档,但它有点令人困惑,不知道如何实现它。

index.js(查看另一半,here

...
() => {
   getDownloadURL(upload.snapshot.ref).then((downloadURL) => {
    db.collection("articles").add({
      actor: {
        description: payload.user.email,
        title: payload.user.displayName,
        date: payload.timestamp,
        image: payload.user.photoURL,
        },
        video: payload.video,
        sharedImg: downloadURL,
        comments: 0,
        description: payload.description,
       });
   });
}

但是,每当我运行此代码时,我都会收到“未处理的拒绝(TypeError):firebase__WEBPACK_IMPORTED_MODULE_0_.default.collection 不是函数。”

firebase.js

import { initializeApp } from 'firebase/app';
import { getAuth, GoogleAuthProvider } from 'firebase/auth';
import { getStorage } from "firebase/storage";
import { getFirestore } from "firebase/firestore";

const firebaseConfig = {
...
}

const firebaseApp = initializeApp(firebaseConfig);
const db = getFirestore(firebaseApp);
const auth = getAuth();
const provider = new GoogleAuthProvider();
const storage = getStorage(firebaseApp);
  
export { auth, provider, storage };
export default db;

关于哪里出了问题有什么建议吗?谢谢!

【问题讨论】:

    标签: javascript firebase


    【解决方案1】:

    与上一个问题相同,由于您使用 v9 语法导入特定函数,因此您不能再调用 dbCollectionReference 上的方法。

    v9 模块化语法中的 sn-p 等效项是:

    const collectionRef = collection(db, "articles")
    addDoc(collectionRef, { ... })
    

    我强烈建议您花一些时间阅读 writing dataupgrade guide 上的 Firebase 文档,以熟悉现有代码中的语法如何映射到新语法。


    如果您不想升级代码,也可以考虑 v9 SDK 的using the compat paths

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2018-06-04
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多