繁体   English   中英

如何在本机反应中从 firebase 火库中获取除一份以外的所有文件?

[英]How to get all documents but one from firebase firestore in react native?

由于我不能使用!= ,我正在使用<>但我不知道如何将它们合并在一起并等待结果。 它一次只适用于一个。

  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;
  }

以下应该可以解决问题:

    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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM