如何根据id更新多个用户的数据

时间:2017-08-16 10:28:12

标签: javascript firebase firebase-realtime-database

我的数据库结构如下所示

{
    "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);
  });
}

我仍然不知道这是否正确,不知道如何使其发挥作用。

0 个答案:

没有答案