我正在尝试从 DataSnapshot 中提取嵌套字典。
var query = admin.database().ref("meetings").orderByChild("deadline");
query.once("value").then((snapshot) =>
{
snapshot.forEach((child) =>
{
console.log(snapshot.val());
}
}
此代码打印如下:
{
'82BE0F33-6812-4EFF-8CB4-FABDACA2B329':
{
deadline: 1509634558,
name: 'cfedfgh',
users:
{
'8YUDtUJuIde8fLaHCfeuSNsHUyq2': '1',
DVAYNspxcGfB001RSkq3S8cxvsH3: '1',
fJXgRJBoFAU0SmA2Zhn4DpdyLGh1: '1'
}
}
}
我将如何着手创建字典用户值数组?或者完全访问它们。
执行 console.log(child.child("users").val());
给我一个 null
。
数据库结构:
最佳答案
使用 DataSnapshot#child()
将为指定相对路径的位置提供另一个 DataSnapshot
。因此,具有子 Node 的 DataSnapshot
被视为父 Node ,因此没有特定值,因此 val()
在这里不起作用。
为了将您的 users
值转换为任何数组,您需要遍历它下面的每个 child 并将键传递给数组,所以像这样:
snapshot.forEach((child) => {
let users = [];
if (child.child("users").exists()) {
child.child("users").forEach((userSnapshot) => {
users.push(userSnapshot.key);
});
}
console.log(users);
}
关于javascript - 从嵌套字典创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47079449/