从嵌套字典中创build一个数组
我试图从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' } } }
我将如何去创build一个字典用户值的数组? 或者访问它们。
做console.log(child.child("users").val());
给我一个null
。
数据库结构:
使用DataSnapshot#child()
将为您提供指定相对path的位置的另一个DataSnapshot
。 因此,带有子项的DataSnapshot
被认为是父节点,因此没有特定的值,所以val()
在这里不起作用。
为了将你的users
值转换成任何数组,你需要遍历它下面的每个子节点,并把这个节点传递给一个数组,像这样:
snapshot.forEach((child) => { let users = []; if (child.child("users").exists()) { child.child("users").forEach((userSnapshot) => { users.push(userSnapshot.key); }); } console.log(users); }
假设snapshot
是一个对象数组,你可以使用下面的代码。 这将为您提供每个logging的所有用户。
const users = [].concat.apply([], snapshot.map(row => { return Object.keys(row).map(key => { return row[key].users }) })) console.log(users)
- 通过电子邮件创build的Firebase-Admin用户显示为匿名
- 在调用更新()数据库ref javascript的Firebase无效path
- Firebase 3.3.x Nodejs – createUserWithEmailAndPassword不是一个函数
- FCM设备组iOS应用徽章更新会导致Android上的空推
- Firebase .orderByChild()。equalTo()。once()。then()当孩子不存在时承诺
- 从Firebasefunction访问Google Site Verification API
- Firebase 3 node.js服务器authentication是否会改变?
- 强制令牌刷新,但令牌仍然过期?
- 我是否需要在每个Cloud Function模块文件的顶部调用admin.initializeApp?