javascript addDoc函数未返回响应

jv4diomz  于 2023-05-05  发布在  Java
关注(0)|答案(2)|浏览(166)

我试图在我的Firestore DB现有的集合中插入一个文档,我尝试了建议的每一个解决方案,但仍然不工作...

Firestore规则:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow write, read: if true; // temporary rule to allow all writes
    }
  }
}

Firebase配置文件:

import { initializeApp } from "firebase/app";
import { getFirestore } from '@firebase/firestore'
import { getStorage } from 'firebase/storage'

const firebaseConfig = {
  apiKey: process.env.FIREBASE_APIKEY,
  authDomain: process.env.FIREBASE_AUTHDOMAIN,
  projectId: process.env.FIREBASE_PROJECTID,
  storageBucket: process.env.FIREBASE_STORAGEBUCKET,
  messagingSenderId: process.env.FIREBASE_MESSAGINGSENDERID,
  appId: process.env.FIREBASE_APPID,
  measurementId: process.env.FIREBASE_MEASUREMENTID,
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);
const db = getFirestore(app)
const storage = getStorage(app);

export { db, storage }

我的插入函数:

async function insertDoc() {
    const data = { name: 'John Doe', email: 'john@example.com' };
    const myCollectionRef = collection(db, 'restore');

    await addDoc(myCollectionRef, data)
    .then((docRef) => {
        console.log('Document written with ID: ', docRef.id);
     })
     .catch((error) => {
        console.error('Error adding document: ', error);
     });
    }

我的Firestore DB是什么样子的:

我尝试了自己创建的insertDoc()函数,希望数据能插入到我的Firestore DB中。

0yycz8jy

0yycz8jy1#

我可以看到你已经尝试使用firestore的官方文档,但是你把它弄混了一点。
在insert函数中,使用await,这是添加premises的正确方法(更多信息here)。
然而,你也在使用.then(),它用于为fetch()添加前提。你将有一个fecth():

fetch("https://api.com/getProduct")
  .then(res => console.log(res.json())
  .catch(err => console.error(err)

在async函数中,添加premises的最佳方法是:

async function insertDoc() {
    const data = { name: 'John Doe', email: 'john@example.com' };
    const myCollectionRef = collection(db, 'restore');

    try {
       const docRef = await addDoc(myCollectionRef, data);
       console.log("Document written with ID: ", docRef.id)
    } catch (error) {
       console.error(Error adding document: ', error);
    }
}

你可以在官方文档中找到更多的信息,但是当你选择一个版本时要小心,你必须点击“网络版本9”,因为看起来你正在使用这个版本的FireStore

myss37ts

myss37ts2#

我想出来了!我降级到Firebase版本7. 24. 0,并更新了我的代码以匹配版本(应用程序初始化,语法...),现在它完美地工作了!

相关问题