使用Javascript读取Firebase数据库时获取空快照?

时间:2018-12-06 06:59:51

标签: javascript firebase-realtime-database firebase-cloud-messaging google-cloud-functions

我具有以下数据库结构:

enter image description here

我正在尝试获取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);
});

1 个答案:

答案 0 :(得分:1)

您的控制台输出完全符合我的期望。您已经从数据库中读取了以下子代:

0: 'c4P...'

然后,您要求打印该对象的键,该键由Object.keys()返回。请注意,此键为键/值对:键为0,值为“ c4P ...”。这意味着以下调用:

Object.keys(userTok.val());

将返回子项的键数组。由于有一个孩子的钥匙为0,因此得到以下数组:

[ '0' ]

因此,我想说您的函数完全按照您的编码进行工作。如果要使用令牌值,请尝试以下操作:

如果您想为每个键分配令牌,也许应该改用Object.values()

Object.values(userTok.val());

我希望它返回一个与它们的键关联的所有值的数组。