【问题标题】:Firestore issue with creating multiple documents创建多个文档的 Firestore 问题
【发布时间】:2022-01-22 12:20:01
【问题描述】:

所以,我正在开发一个反应原生应用程序。在这个应用程序中,我想使用 firestore 向多个用户发送消息。基本上,我正在尝试创建从其他文档生成的多个文档。 问题是只创建了一个文档。 这是用于创建文档的代码:

 Userref.where("Groupe","array-contains","/Roles/"+email+"/") 
        .onSnapshot((querySnapshot) => {
          querySnapshot.forEach((da) => {
              const batch = db.batch();
              setMesid(uuid.v4());
              const messageRef = db.collection("Messagerecieved").doc(mesid)
              batch.set(messageRef,{
                reciever:da.data().uid,
                sender:auth.currentUser.uid,
                senderemail:auth.currentUser.email,
                subject:Sujet,
                message:Message,
                createdAt: new Date(),
                messageid: mesid,
                file:fileUrl,
      
            })
            
              batch.commit();
            });}) 

预期的结果是在集合 Messagerecieved 下创建了多个文档。 但是即使有很多文档满足条件,也只会创建一个文档。

【问题讨论】:

    标签: javascript google-cloud-firestore


    【解决方案1】:

    我怀疑setMesid 是一个useState 钩子,它们是异步执行的。有关更多信息,请参阅useState set method not reflecting change immediately

    因此,与其尝试从钩子中读取 UUID,不如使用局部变量来保存它:

    const batch = db.batch();
    const messageID = uuid.v4(); //? assign to a local var and use ?
    const messageRef = db.collection("Messagerecieved").doc(messageID)
    setMesid(messageID); // ? this is only needed if you want to show it in the UI too
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 2018-07-08
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      相关资源
      最近更新 更多