Как динамически обновить документ в коллекции в Firebase - PullRequest
0 голосов
/ 07 сентября 2018

Мне удалось динамически создавать записи (профили пользователей) и получать их уникальный идентификатор в Firebase.

Но теперь я хочу, чтобы конечный пользователь мог обновлять свой профиль. В то время как я могу получить идентификатор документа aka uid профиля. Как мне настроить возможность динамически получать идентификатор пользователя, вошедшего в систему, и обновлять эту конкретную запись?

Я пробовал следующее:

 async updateProfile() {
    const docRef = await db.collection("users").get(`${this.userId}`);
    docRef.update({
      optInTexts: this.form.optInTexts,
      phone: this.form.mobile
    });
    db.collection("users")
      .update({
        optInTexts: this.form.optInTexts,
        phone: this.form.mobile
      })
      .then(function () {
        console.log("Profile successfully updated!");
      })
      .catch(function (error) {
        console.error("Error updating document: ", error);
      });
  }

`

Я тоже пробовал

 async updateProfile() {
    const docRef = await db.collection("users").where("userId", "==", `${this.userId}`);
    docRef.update({
      optInTexts: this.form.optInTexts,
      phone: this.form.mobile
    });
    db.collection("users")
      .update({
        optInTexts: this.form.optInTexts,
        phone: this.form.mobile
      })
      .then(function () {
        console.log("Profile successfully updated!");
      })
      .catch(function (error) {
        console.error("Error updating document: ", error);
      });
  }

`

А это

  async updateProfile() {
    const docRef = await db.collection("users").get(`${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("Profile successfully updated!");
      })
      .catch(function (error) {
        console.error("Error updating document: ", error);
      });
  }

Ошибка docRef.update is not a function

1 Ответ

0 голосов
/ 08 сентября 2018

Я смог решить эту проблему после просмотра этого поста: Как обновить единый документ пожарной базы Firebase .

Коллекция, на которую я пытаюсь ссылаться, представляет собой пользовательскую таблицу с данными, созданными из Firebase из коробки Google auth. Таким образом, запрос и обновление данных отличались от других моих данных, где 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);
        });
      })
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...