Firestore中的.update,正在替换所有数据

时间:2018-11-26 22:50:12

标签: javascript firebase google-cloud-firestore

我已经查看了https://firebase.google.com/docs/firestore/manage-data/add-data#update-data处的文档。

我有一个个人资料页面,个人可以在其中更新特定内容,即电话号码。

即使我正在使用update,也可以在单击“提交”按钮时替换个人资料页面中的所有内容。我只希望更新与Firebase中不同的数据。我该怎么做?

    const profileData = {
      optInTexts: this.form.optInTexts,
      optInWhatsappMessages: this.form.optInWhatsappMessages,
      subscribeToMailingList: this.form.subscribeToMailingList,
      phoneWhatsapp: e164Whatsapp,
      phone: e164,
      workerSkills: this.form.workerSkills
    };

    const profileRef = await db.collection('users')
      .where("uid", "==", this.userId)
      .get()
      .then(snapshot => {
        snapshot.forEach(function (doc) {
          db
            .collection("users")
            .doc(doc.id)
            .update({...profileData});
        });
      });

1 个答案:

答案 0 :(得分:0)

您可以将set方法与{ merge: true }一起使用,如下所示:

ref.set({
  ...profileData
}, { merge: true });