我遇到的情况是我需要集合中不在数组中的项。因此,在此示例中-我是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']
}
];
请让我知道是否有人对此有更好的解决方案。