我的 Firebase 云函数因 Object.value 不是函数错误而失败?

Rog*_*gie 1 javascript google-cloud-platform google-cloud-functions

为什么当我尝试在 registrationTokens 下获取 Firebase 子节点的值时出现以下错误:

数据库结构:

"fcmtokens" : {
    "dBQdpR7l1WT2utKVxdX2" : {
      "registrationTokens" : {
        "O": ""c4PSCAUAg5s:Yw95DyVxwElE88LwX7" 
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

控制台输出:

类型错误: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
Run Code Online (Sandbox Code Playgroud)

Dou*_*son 5

Object.values() 是 ECMAScript 2017 中的一项新功能。

Cloud Functions 默认运行节点 6,该节点仅支持 ECMAScript 2015 (ES6)。因此,如果您在默认 Cloud Functions 运行时中运行该代码,则会收到该错误(因为该函数不存在)。

节点 8 支持 ECMAScript 2017,而 Cloud Functions 允许您部署到节点 8。因此,如果您确实需要使用 Object.values(),则应改为部署到节点 8。或者您可以使用lodash 等效项