child_changed事件firebase

时间:2016-11-02 13:43:13

标签: node.js express firebase firebase-realtime-database

我是firebase的新手。我只是尝试了一些例子,当我遇到它的一些事件时顺便说一句非常酷。

我在firebase数据库中保存了一些数据:

 driver
      -KV_Cj7sL6sg6K9E5ifh
         status: "Incomplete"

困扰我的是,当孩子被更新时,触发了child_changed事件。当我访问它的数据时,我没有看到它的密钥。

我在驱动程序表中创建了一个节点(我认为一行在firebase中称为不确定的节点)。当我更改它的状态以完成它触发的 child_changed 事件时。我收到了已更新的数据包。问题是我想获得Id(KV_Cj7sL6sg6K9E5ifh)。但问题是它只向我发送状态:完整。

这是我为child_changed编写的代码:

usersRef.on("child_changed", function(data) {
   var player = data.val();
   console.log(player);
   console.log("The new status is:  "+ player.status);
});

请帮助我,我将如何收到这个ID。谢谢

2 个答案:

答案 0 :(得分:2)

你可以得到Id孩子,请尝试以下

console.log("The new status is:  "+ player.$id);

Object返回的每个Firebase都包含$id属性

<强>更新:

你可以得到id/key偶然Firebase不会在孩子中返回ID,请尝试以下

console.log("The new status is:  "+ data.ref.key); //it will returns -KV_Cj7sL6sg6K9E5ifh


console.log("The new status is:  "+ data.ref.parent.key); //it will returns driver

答案 1 :(得分:2)

您称之为ID的内容在Firebase术语中称为密钥。要获取快照的密钥,您可以访问该快照的key属性:

usersRef.on("child_changed", function(snapshot) {
   var player = snapshot.val();
   console.log(player);
   console.log("The new status is:  "+ player.status);
   console.log("The key of the player is "+snapshot.key);
})