我想获取此数据的推送方法的唯一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
});
答案 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]);
});