我的数据库结构如下所示
{
"user_notifications": {
"user1": {
"location1": {
"name": "Nice location",
"postCounter": "6",
"newPosts": "true"
},
"location2": {
"name": "Another location",
"postCounter": "0",
"newPosts": "false"
}
}
},
"location_users": {
"location1": {
"user1": "true",
"user2": "true"
},
"location2": {
"user1": "true"
}
}
}
我认为针对每个用户的位置上的任何新操作的新通知都是坏主意,因为对于具有100,000个订阅者的位置,它将是20兆字节的数据。因此,我想为一个用户存储一个位置通知实例,该用户将包含位置名称,新帖子计数器和布尔值,以便在用户进入其通知屏幕时通知用户新帖子。
问题是:如何在将新帖子添加到此位置时更新有关特定位置的每个用户通知。我的意思是提高帖子计数器,将newPosts值设置为true。
我找到Frank van Puffelen关于交易更新的帖子(https://stackoverflow.com/a/30699277/8437130),对其进行了修改,我得到了类似的内容:
function updateNotifications(ref, locationId) {
var updates = {};
var query = ref.child('location_users'+'/'+locationId);
query.once('value', function(snapshot) {
snapshot.forEach(function(userSnapshot) {
updates['user_notifications/'+userSnapshot.(don't know how to get user id from there)+'/'+locationId+'/postCounter'] = (don't know how to raise the counter by 1);
updates['user_notifications/'+userSnapshot.(don't know how to get user id from there)+'/'+locationId+'/newPosts'] = true;
})
ref.update(updates);
});
}
我仍然不知道这是否正确,不知道如何使其发挥作用。