【问题标题】:How can update new Field data to existing document without overwrite to existing data in firebase-9 by react native如何通过本机反应将新字段数据更新到现有文档而不覆盖firebase-9中的现有数据
【发布时间】:2022-01-08 10:02:06
【问题描述】:

我尝试通过 react native expo 将新字段添加到 firestore 中的现有数据中来更新数据 当我尝试通过 setDoc() 进行更新时,所有现有数据都已删除,并且仅新更新了一个 remian 如何将数据更新到firebase中的同一文档中

有人可以指导我如何在不丢失 Firestore 中现有数据的情况下添加新字段。

这是我的 setDoc 尝试

const updateUser = async(key, value) => {
  await addDoc(doc(db,'users',user.uid), { [key]: value })
};

我尝试添加的是新字段。如何添加新字段 我也尝试如下

 const updateUser = async(key,value)=>{
    const updateRef = doc(db, "users",value);
    await updateDoc(updateRef, {
      [key]: true
    });
   }

这是我尝试添加的新字段

【问题讨论】:

  • 来自stackoverflow.com/questions/70144432/…:“当您调用addDoc时,Firestore会为您生成新文档的ID。如果您想自己指定ID,请改用setDoc。”
  • @Mises:你的意思是在代码中将调用从addDoc 更改为setDoc 吗?这听起来像是 OP 自己应该做出的改变。
  • @FrankvanPuffelen 我写了一个总结,我改变了所以希望他知道他在代码中使用了错误的函数。
  • 但这应该是一个答案,而不是对问题的编辑。
  • @FrankvanPuffelen 他正在写关于setDoc() func 的文章,只有在代码sn-p 中他有addDoc()。如果他在代码中有一个选项 { merge: true },我会指出他使用了错误的函数。

标签: javascript firebase react-native google-cloud-firestore


【解决方案1】:

您需要设置选项合并。

火力基地 9+

function updateData(collPath, data) {
    setDoc(doc(db, collPath, data.id), data, { merge: true})
}

火力基地 8-

function updateData(collPath, data) {
    db.collection(collPath).doc(data.id).set(data, { merge: true })
}

在这两个库中,您都可以使用函数 updateDoc() 或 v8 ...doc().update()

【讨论】:

    【解决方案2】:

    您可以从 firebase 库中导入 firestore

    import firestore from '@react-native-firebase/firestore';
    

    然后你就可以得到你需要的文档参考

    const docRef = firestore().collection('Users').doc('ABC')
    

    之后你可以通过update()方法更新你的文档

      docRef
      .update({
        age: 31,
      })
      .then(() => {
        console.log('User updated!');
      });
    

    您可以在本文档 https://rnfirebase.io/firestore/usage 中找到有关 firestore 使用的详细信息

    【讨论】:

      猜你喜欢
      • 2020-12-03
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 2020-11-24
      • 2018-10-06
      • 2022-12-22
      • 2020-08-02
      • 2021-07-31
      相关资源
      最近更新 更多