firebase Javascript和Firestore -同时使用过滤器和还原器

kg7wmglp  于 2022-11-25  发布在  Java
关注(0)|答案(1)|浏览(282)

我有两个对象数组,我想遍历它们来产生一个新的过滤数组。但是,我还需要根据一个参数过滤掉新数组中的一些对象。我正在尝试这样做:

function loadAllUsersDontFollow() {
  
firestore()
        .collection("users")
        .where("id", "!=", user?.id)
        .get()
        .then((response) => {
          const data = following.filter((follow) => {
            return response.docs.reduce(function (res, item, index) {
              if (item.data().id !== follow.userId) {
                res.push(item);
              }
              return res;
            }, []);
          });
        });
}

函数的返回与我需要的完全相反,它返回的是我已经关注的用户,而我需要的是我还没有关注的用户。请帮助我。

hgc7kmma

hgc7kmma1#

如果你创建了一个hashed set的 * 追随者 * ID,这会更容易...

const followerIds = new Set(following.map(({ userId }) => userId));

你可以用它来过滤用户...

const data = response.docs.filter((doc) => !followerIds.has(doc.data().id));

您的问题是filter()需要从回调返回一个布尔值。您返回的数组即使为空也总是 truthy

相关问题