如何在Firebase的集合中动态更新文档。

11 浏览
0 Comments

如何在Firebase的集合中动态更新文档。

我已经能够动态创建记录(用户配置文件)并检索它们在Firebase中的唯一ID。

但是现在我想让最终用户更新他们的配置文件。虽然我可以检索配置文件的文档ID(即uid),但是如何编写模板以动态获取已登录用户的uid并更新该特定记录呢?

我尝试了以下方法:

async updateProfile() {
  const docRef = await db.collection("users").doc(this.userId);
  docRef.update({
    optInTexts: this.form.optInTexts,
    phone: this.form.mobile
  });
  db.collection("users")
    .doc(this.userId)
    .update({
      optInTexts: this.form.optInTexts,
      phone: this.form.mobile
    })
    .then(function () {
      console.log("配置文件成功更新!");
    })
    .catch(function (error) {
      console.error("更新文档时出错:", error);
    });
}

我还尝试了这个方法:

async updateProfile() {
  const docRef = await db.collection("users").where("userId", "==", this.userId).get();
  docRef.docs[0].ref.update({
    optInTexts: this.form.optInTexts,
    phone: this.form.mobile
  });
  db.collection("users")
    .doc(this.userId)
    .update({
      optInTexts: this.form.optInTexts,
      phone: this.form.mobile
    })
    .then(function () {
      console.log("配置文件成功更新!");
    })
    .catch(function (error) {
      console.error("更新文档时出错:", error);
    });
}

以及这个方法:

async updateProfile() {
  const docRef = await db.collection("users").doc(this.userId);
  docRef.update({
    optInTexts: this.form.optInTexts,
    phone: this.form.mobile
  });
  db.collection(`users/${this.userId}`)
    .update({
      optInTexts: this.form.optInTexts,
      phone: this.form.mobile
    })
    .then(function () {
      console.log("配置文件成功更新!");
    })
    .catch(function (error) {
      console.error("更新文档时出错:", error);
    });
}

错误信息:`docRef.update不是一个函数`。

0
0 Comments

如何在 Firebase 中动态更新集合中的文档

问题的出现原因:

我遇到了一个问题,我想要动态更新 Firebase 中集合中的文档,但是我不知道如何实现。在经过一些研究后,我找到了一个与我的问题相关的帖子。

解决方法:

通过阅读这篇帖子:How to update a single firebase firestore document,我成功解决了这个问题。我正在尝试引用的集合是一个用户表,其中的数据是通过 Firebase 的内置 Google 身份验证创建的。因此,查询和更新数据与我的其他数据不同,因为文档 ID 等于集合的 uid。下面是解决方案的代码示例:

async updateProfile() {
  const e164 = this.concatenateToE164();
  const data = {
    optInTexts: this.form.optInTexts,
    phone: e164
  };
  const user = await db.collection('users')
    .where("uid", "==", this.userId)
    .get()
    .then(snapshot => {
      snapshot.forEach(function(doc) {
        db.collection("users").doc(doc.id).update(data);
      });
    })
}

通过以上代码,我可以通过查询用户的 uid 并更新相应的文档来实现动态更新集合中的文档。

0