为什么当我尝试在registrationTokens下获取Firebase子节点的值时出现以下错误:
数据库结构:
"fcmtokens" : {
"dBQdpR7l1WT2utKVxdX2" : {
"registrationTokens" : {
"O": ""c4PSCAUAg5s:Yw95DyVxwElE88LwX7"
}
}
}
控制台输出:
TypeError:Object.values不是函数
我部署到Firebase Cloud Functions的功能的一部分:
return admin.database().ref('/fcmtokens/' + toId + '/registrationTokens').once('value').then((userTok) => {
const registrationTokens = Object.values(userTok.val());
console.log('registrationTokens', registrationTokens
答案 0 :(得分:4)
Object.values()是ECMAScript 2017中的新增功能。
Cloud Functions默认情况下运行节点6,该节点仅支持ECMAScript 2015(ES6)。因此,如果您在默认的Cloud Functions运行时中运行该代码,则会收到该错误(因为该函数不存在)。
节点8支持ECMAScript 2017,并且Cloud Functions允许您部署到节点8。因此,如果确实需要使用Object.values(),则应该deploy to node 8 instead。或者,您可以使用lodash equivalent。