我的数据结构如下所示(删除了不必要的部分):
{
"threads" : {
"PUSHID" : {
"info" : {
"members" : {
"uid" : true,
"uid2" : true
}
}
}
}
}
我试图编写一些javascript来提取用户所在线程的快照,但我无法在不拉动每个线程的快照的情况下找到工作方式。这是我的代码,它提取每个线程快照。
firebase.database().ref('threads').on('child_added', function(snapshot) {
if (snapshot.hasChild('info/members/' + userUid)) {
// Display thread info
}
});
我尝试使用.orderByChild('info/members/' + userUid)
进行查询并删除空快照,但我必须为每个.indexOn
添加userUid
,这显然不切实际。
答案 0 :(得分:0)
您当前的结构可以轻松/高效地查找线程的用户。但您的用例是查找用户的线程。您需要扩充数据模型以允许用例:
{
"user_threads" : {
"uid": {
"PUSHID": true,
"PUSHID2": true
},
"uid2": {
"PUSHID": true,
"PUSHID3": true
}
}
}
然后阅读:
firebase.database().ref('user_threads/'+userUid).on('child_added', function(snapshot) {
...
});
使用NoSQL数据库时,修改/扩展数据模型以匹配应用程序的用例非常常见。