Как сделать запрос firebase для одного документа более эффективным в реагировании на нативный - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь получить данные о пользователе, которые будут добавлены в состояние на основе одного запроса поиска по идентификатору пользователя пользователя. Я попытался сделать единственный путь к документу, который не работал для меня, поскольку firebase.auth (). CurrentUser.uid отличается от do c .id, и код, который я сейчас использую:

      firebase.firestore()
        .collection("users").get().then((querySnapshot) => {
          querySnapshot.forEach((doc) => {
            console.log(firebase.auth().currentUser.email);
            console.log(doc.data().email;
            if (doc.data().email) == firebase.auth().currentUser.email) {
              this.setState({
                avatar: doc.data().avatar,
                name: doc.data().name,
                email: doc.data().email
              });
            }
          });
        });

Хотя этот код работает, он невероятно неэффективен, поскольку проходит через всех пользователей и сравнивает их электронную почту с текущей электронной почтой пользователя. Я хотел бы знать, есть ли способ просто искать данные, не используя этот метод. Любая помощь будет в значительной степени оценена. Заранее спасибо!

1 Ответ

1 голос
/ 28 января 2020

Попробуйте сделать что-то подобное и прокомментируйте, если это сработало для вас:

  firebase.firestore()
    .collection("users")
    .where('email', '==', firebase.auth().currentUser.email)
    .get()
    .then((querySnapshot) =>
      querySnapshot.forEach((doc) =>
          this.setState({
            avatar: doc.data().avatar,
            name: doc.data().name,
            email: doc.data().email
          })
      )
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...