Как получить все документы, кроме одного из пожарного магазина Firebase в реагировать родной? - PullRequest
0 голосов
/ 05 ноября 2019

Поскольку я не могу использовать !=, я использую < и >, но я не знаю, как объединить их вместе и ожидать результата. Работает только по одному за раз.

  async getAllUsersExceptCurrent() {
    const lower = firebase
      .firestore()
      .collection('users')
      .where(
        firebase.firestore.FieldPath.documentId(),
        '<',
        firebase.auth().currentUser.uid
      )
      .get();

    const upper = firebase
      .firestore()
      .collection('users')
      .where(
        firebase.firestore.FieldPath.documentId(),
        '>',
        firebase.auth().currentUser.uid
      )
      .get();

    const usersList = await lower.then(snapshot => {
      return snapshot.docs.map(user => {
        console.log(user.data());
        return { id: user.id, username: user.data().username };
      });
    });

    return usersList;
  }

1 Ответ

1 голос
/ 05 ноября 2019

Следующее должно делать трюк:

    async getAllUsersExceptCurrent() {
            const lower = firebase
                .firestore()
                .collection('users')
                .where(
                    firebase.firestore.FieldPath.documentId(),
                    '<',
                    firebase.auth().currentUser.uid
                )
                .get();

            const upper = firebase
                .firestore()
                .collection('users')
                .where(
                    firebase.firestore.FieldPath.documentId(),
                    '>',
                    firebase.auth().currentUser.uid
                )
                .get();

            const [l, u] = await Promise.all([lower, upper]);

            const lArray = l.docs.map(user => {
                return { id: user.id, username: user.data().username };
            });

            const uArray = u.docs.map(user => {
                return { id: user.id, username: user.data().username };
            });

            return lArray.concat(uArray);
        }

Следующее также будет работать:

    //...
    const results = await Promise.all([lower, upper, lower]);

    const usersList = [];
    results.forEach(r => {
      r.docs.map(user => {
        usersList.push({ id: user.id, username: user.data().username });
      });
    });
    return usersList;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...