我有以下数据库结构:
我正在尝试获取 registrationTokens 下的值列表,然后对 token 列表执行 FCM 通知。但是即使子节点下有 token ,控制台的输出也是空的。我在这里遗漏了什么吗?
控制台输出:
registrationTokens [ '0' ]
下面是我的部分 JS 函数代码:
return admin.database().ref('/fcmtokens/' + toId + '/registrationTokens').once('value').then((userTok) => {
const registrationTokens = Object.keys(userTok.val());
console.log('registrationTokens', registrationTokens);
});
最佳答案
您的控制台输出完全符合我的预期。您已经从数据库中读取了以下 child :
0: 'c4P...'
然后您要求打印该对象的键,由 Object.keys() 返回.请注意,此键是一个键/值对:键为 0,值为“c4P...”。这意味着以下调用:
Object.keys(userTok.val());
将返回子项的键数组。因为有一个 child 的键为 0,所以你得到这个数组:
[ '0' ]
所以,我想说您的函数完全按照您编写的代码运行。如果你想要 token 值,试试这个:
如果你想为每个键标记,也许你应该使用 Object.values()相反:
Object.values(userTok.val());
我希望它返回一个数组,其中包含与它们的键关联的所有值。
关于javascript - 在 Javascript 中读取 Firebase 数据库时获取空快照?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53646108/