我具有以下数据库结构:
我正在尝试获取registrationTokens下的值列表,然后对令牌列表执行FCM通知。但是,即使子节点下有一个令牌,控制台的输出也为空。我在这里想念东西吗?
控制台输出:
registrationTokens [ '0' ]
下面是我的JS函数代码的一部分:
return admin.database().ref('/fcmtokens/' + toId + '/registrationTokens').once('value').then((userTok) => {
const registrationTokens = Object.keys(userTok.val());
console.log('registrationTokens', registrationTokens);
});
答案 0 :(得分:1)
您的控制台输出完全符合我的期望。您已经从数据库中读取了以下子代:
0: 'c4P...'
然后,您要求打印该对象的键,该键由Object.keys()返回。请注意,此键为键/值对:键为0,值为“ c4P ...”。这意味着以下调用:
Object.keys(userTok.val());
将返回子项的键数组。由于有一个孩子的钥匙为0,因此得到以下数组:
[ '0' ]
因此,我想说您的函数完全按照您的编码进行工作。如果要使用令牌值,请尝试以下操作:
如果您想为每个键分配令牌,也许应该改用Object.values():
Object.values(userTok.val());
我希望它返回一个与它们的键关联的所有值的数组。