firebase - 获取uniqe推送ID

时间:2016-06-20 05:30:19

标签: javascript firebase firebase-realtime-database

我想获取此数据的推送方法的唯一ID:

{
  "users": {
    "-KKUmYgLYREWCnWeHDfT": {
      "fName": "Peter",
      "ID": "U1EL9SSUQ",
      "username": "peter01"
    },
    "-KKUmYgLYREWCnWeHCvO": {
      "fName": "John",
      "ID": "U1EL5623",
      "username": "john.doe"
    }
  }
}

由于name()已被弃用,我尝试使用.key,但它不返回唯一ID,而是返回users键。

ref.child("users").orderByChild("ID").equalTo("U1EL9SSUQ").once("value", function (snapshot) {

    console.log("KEY: " + snapshot.key); // snapshot.key === users

});

2 个答案:

答案 0 :(得分:2)

对Firebase数据库执行查询时,可能会有多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。

通过调用snapshot.key,您将获得执行查询的节点的名称。已弃用的snapshot.name()也可以完全相同。

要获取匹配项的键,您需要遍历快照的子项:

ref.child("users")
   .orderByChild("ID")
   .equalTo("U1EL9SSUQ")
   .once("value", function (snapshot) {
    snapshot.forEach(function(child) {
        console.log("KEY: " + child.key);
    });
});

答案 1 :(得分:0)

您需要使用.val()从DataSnapshot中提取Javascript值。以下应该有效。

ref.child("users").orderByChild("ID").equalTo("U1EL9SSUQ").once("value", function (snapshot) {

    console.log("KEY: " + Object.keys(snapshot.val())[0]);

});