Javascript 用于引用的Firebase查询:true
我在firebase上获取结构复杂的数据时遇到问题。 我有一个这样的结构:Javascript 用于引用的Firebase查询:true,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我在firebase上获取结构复杂的数据时遇到问题。 我有一个这样的结构: place1: { visits: { user1: true, user2: true, user3: true, user4: true } }, place2: { visits: { user1: true, user3: true, user4: true } }, place3: { visits: { user2: true, user3: true, us
place1: {
visits: {
user1: true,
user2: true,
user3: true,
user4: true
}
},
place2: {
visits: {
user1: true,
user3: true,
user4: true
}
},
place3: {
visits: {
user2: true,
user3: true,
user4: true
}
}
如何查询所有去过所有地方的用户
非常感谢你的帮助 您当前的数据结构允许您高效地罚款所有去过特定地点的用户。它不允许您高效地查询特定用户去过的所有地方 要允许第二次查询,应添加第二个数据结构:
user1: {
place1: true,
place2: true
},
user2: {
place1: true,
},
user3: {
place1: true,
place3: true
},
user4: {
place1: true,
place2: true,
place3: true,
place4: true
}
有了这个额外的结构(通常称为反向索引),您可以找到每个用户去的地方
由于您现在有两个结构,因此需要确保将每次访问都添加到这两个地方。单个多位置更新可以实现以下功能:
function recordVisitor(uid, placeid) {
var updates = {};
updates[`/userVisits/${uid}/${placeid}`] = true;
updates[`placeVisitors/${placeid}/${uid}`] = true;
firebase.database().ref().update(updates);
}
另请参见我对相关用例(在类别中查询项目)的回答,该用例也需要反向索引:非常感谢。然而,这种数据结构是可伸缩的吗?