我已经创建了这样的数据,
device
[random ID]
id: "435345"
token: "homer"
[random ID]
id: "594935"
token: "marge"
我使用以下代码通过“令牌”找到“ id”。
const db = admin.database().ref("device");
db.orderByChild("token").equalTo(token).once("value",
function(data){
console.log("key= " + data.key + " ,value= " + data.val());
}
)
如果token
是“ marge”,我希望data.val()
是“ 594935”。但是当我运行代码时,结果是这样的,
info: key= device ,value= [object Object]
我认为data
不是“设备”的第二个子节点,而是“设备”节点本身。代码有什么问题?
答案 0 :(得分:0)
您必须执行循环才能访问列表的子级值
即使查询只有一个匹配项,快照仍然是列表;它只包含一个项目。要访问该项目,您需要遍历结果
您可以详细了解here
因此,您的代码应如下所示:
const db = admin.database().ref("device");
db.orderByChild("token").equalTo(token).once("value", function(data_snapshot) {
data_snapshot.forEach(function(data_child) {
console.log(data_child.val());
});
});