event.params 评估为未定义;无法使用 Cloud Functions 访问 Firebase 实时数据库中的 event.params.post

Posted

技术标签:

【中文标题】event.params 评估为未定义;无法使用 Cloud Functions 访问 Firebase 实时数据库中的 event.params.post【英文标题】:event.params evaluating to undefined; Cant access event.params.post in Firebase Realtime Database Using Cloud Functions 【发布时间】:2019-11-13 10:38:23 【问题描述】:

我已经尝试了所有我知道的方法来让这个云函数正常工作,但我不知道这个云函数出于什么原因将 event.params 评估为未定义。

我的云功能是:-

'use-strict'

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.sendNotification = functions.database.ref('posts/post').onWrite(event => 
  const payload = 
    notification: 
      title: "Title",
      body: event.params.post,
      icon: "default"
    
  ;

  return admin.messaging().sendToDevice(payload).then(result => 
    console.log("notification Sent")
  );

);

我得到的错误:-

sendNotification
TypeError: Cannot read property 'post' of undefined at exports.sendNotification.functions.database.ref.onWrite.event(/srv/index.js: 11: 23) at cloudFunction(/srv/node_modules / firebase - functions / lib / cloud - functions.js: 119: 23) at / worker / worker.js: 825: 24 at < anonymous > at process._tickDomainCallback(internal / process / next_tick.js: 229: 7)

我的数据库有一个名为“posts”的直接子级。每当我在其中添加一个孩子时说post 函数触发但我无法获得post 值。

【问题讨论】:

【参考方案1】:

这很可能是因为您在新版本的 Firebase SDK for Cloud Functions 中使用了旧语法。

您的语法 (.onWrite(event =&gt; )) 对应于 SDK 版本

见https://firebase.google.com/docs/functions/beta-v1-diff?authuser=0#realtime-database

您可以在package.json文件中查看Cloud Function的版本。

如果确认您的版本是> v1.0.0,您应该如下调整您的代码:

exports.sendNotification = functions.database.ref('posts/post').onWrite((change, context) => 
  const payload = 
    notification: 
      title: "Title",
      body: context.params.post,
      icon: "default"
    
  ;

  return admin.messaging().sendToDevice(payload)
  .then(result => 
    console.log("notification Sent");
    return null;
  );

);

【讨论】:

以上是关于event.params 评估为未定义;无法使用 Cloud Functions 访问 Firebase 实时数据库中的 event.params.post的主要内容,如果未能解决你的问题,请参考以下文章

无法访问 json 对象属性和值在 rails 视图中显示为未定义

由于某些 javascript 提升,变量显示为未定义

为啥我的 HTTP DELETE 请求正文显示为未定义?

为什么数组索引未定义为未定义?

Facebook 如何在其应用程序中为未保存的更改显示自定义模式窗口?

FancyBox iframe 返回 parent.$ 为未定义(使用 WordPress)