当子级中的某些子级值更改时,Firebase会检索数据

时间:2019-07-26 11:11:01

标签: javascript firebase firebase-realtime-database

所以我有一个firebase实时数据库,用于保存用户消息。目前,有了它,因此当用户的“收件箱”子代更新时,它会检索该子代的最新数据,例如:

firebase.database().ref('users/'+firebase.auth().currentUser.uid+'/inbox/').on('child_changed', function(snapshot) {
// get the latest data
});

但是使用此方法时,如果用户删除了一条消息,它将再次检索子数据。无论如何,仅当该子对象中的一个子对象被更新时,才只能检索最新数据吗?

所以在我的数据库中,它是这样设置的:

{
  "users" : {
   "IPenCEXKICROYWzYtyzybzhem9R2" : {

      "inbox" : {
        "32tcqIRaG2RAgb9dTwmcgKoVPhd2IPenCEXKICROYWzYtyzybzhem9R2" : {
          "lastmessagetimestamp" : 1564139876817,

        "conversationmessages" : {

          "-LhKZ-MUVxbyRcqp-Q_c" : {
            "from" : "32tcqIRaG2RAgb9dTwmcgKoVPhd2",
            "messagetext" : "this is a test message",
            }
          },
        },
      },
    },
  }
}

我正在保存用户收到的最后一条消息的时间戳。因此,我希望它仅在'lastmessagetimestamp'子值更改时才检索数据。

我想到的最简单的方法是:

firebase.database().ref('users/'+firebase.auth().currentUser.uid+'/inbox/**conversationid**/lastmessagetimestamp/').on('child_changed', function(snapshot) {
// get the latest data
});

但是因为我的“会话ID”是随机生成的,并且不是唯一的,所以无法完成。有没有办法跳过“对话ID”并直接转到“ lastmessagetimestamp”?

0 个答案:

没有答案