firebase - 获取唯一的推送 ID

firebase - Get the uniqe push ID

我想获取此数据推送方法的唯一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

});

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

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

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

});

当您对 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);
    });
});