Firebase分页-我需要数组不包含ID的集合中的值

时间:2019-12-12 10:36:29

标签: javascript firebase google-cloud-firestore

我遇到的情况是我需要集合中不在数组中的项。因此,在此示例中-我是userA,并且有很多公司,如果我不喜欢或喜欢一个公司,我会在公司集合中找到该公司,并使用userA更新该阵列。

当我想获取公司集合时,看起来在那个DislikedBy或LikedBy数组中存在userA,我没有一个查询要问的地方,嘿,给我所有在这两个数组中没有userA的公司。所以我现在正在做的是这个,我相信将来它会很昂贵。

getCompanies = () => {
    const docRef = Firebase.firestore().collection('companies');

    docRef.get().then(querySnapshot => {
        let data = [];
        querySnapshot.forEach(doc => {
            data.push({
                Id: doc.id,
                ...doc.data(),
            });
        });

        if (data.length) {
            const id = Firebase.auth().currentUser.uid;
            data.filter(a => {
                if (a.LikedBy.length) {
                    return (data = data.filter(
                        b => !b.LikedBy.includes(id),
                    ));
                } else {
                    return (data = data.filter(
                        c => !c.DislikedBy.includes(id),
                    ));
                }
            });

            this.setState({companies: data});
        }
    });
};

这是公司集合示例。

companies = [
  'companyA': {
    LikedBy: ['userA', 'userB'],
    DislikedBy: ['userC']
  },
  'companyB': {
    LikedBy: ['userD'],
    DislikedBy: ['userG']
  }
];

请让我知道是否有人对此有更好的解决方案。

0 个答案:

没有答案