【问题标题】:Cannot read property 'user_id' of undefined无法读取未定义的属性“user_id”
【发布时间】:2018-04-07 14:00:39
【问题描述】:

我想通过 Firebase 云功能发送设备到设备的推送通知。我正在编写 node.js 脚本

exports.sendNotification = functions.database.ref('/messages/{user_id}/{rec_user_id}').onWrite((event) => {

const sender_user_id = event.params.user_id;
const receiver_user_id = event.params.rec_user_id;

console.log('We have a notification from : '+ sender_user_id+  " | Receiced by " + receiver_user_id);

return;

});

在 Firebase 云上部署功能后出现错误

TypeError: Cannot read property 'user_id' of undefined

完整的错误日志是:

TypeError: Cannot read property 'user_id' of undefined
at exports.sendNotification.functions.database.ref.onWrite.event (/user_code/index.js:28:40)
at Object.<anonymous> (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:112:27)
at next (native)
at /user_code/node_modules/firebase-functions/lib/cloud-functions.js:28:71
at __awaiter (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:24:12)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:82:36)
at /var/tmp/worker/worker.js:700:26
at process._tickDomainCallback (internal/process/next_tick.js:135:7)

我得到了here的答复

它工作正常,但是当我使用时

if(!event.data.val()){

return console.log('A Notification has been deleted from the database : ', sender_user_id);

}

Firebase 日志再次开始给我一条错误消息说

Cannot read property 'val' of undefined

如何摆脱这些错误? 提前致谢

【问题讨论】:

标签: javascript node.js firebase firebase-realtime-database google-cloud-functions


【解决方案1】:

关于val()你需要做以下事情:

exports.sendNotification = functions.database.ref('/messages/{user_id}/{rec_user_id}').onWrite((change,context) => {

const afterData=change.after.val();
});

由于您使用的是onWrite(),那么数据参数应该是change,它具有beforeafter 属性,每个属性都是DataSnapshot,具有以下方法:

https://firebase.google.com/docs/reference/admin/node/admin.database.DataSnapshot

也供参考:

https://firebase.google.com/docs/reference/functions/functions.Change

【讨论】:

  • 但是@Peter 你能告诉我,为什么我在使用带有 event 参数的 onWrite() 时会出错
  • 没问题,因为云功能更新到1.0版本,所以没有事件参数了。在这里阅读:firebase.google.com/docs/functions/beta-v1-diff。它已经像上周一样发布了,所以我猜大多数在线教程已经过时了
  • 我需要更多帮助,我想实现推送通知 i=on 2 不同的事件(即 1. 当有人给我发消息时 nd 2)当有人评论我的帖子时.. 如何实现这一点?
  • 请在另一个问题中询问有关您要做什么的更多详细信息
猜你喜欢
  • 2018-09-13
  • 1970-01-01
  • 1970-01-01
  • 2020-11-16
  • 2020-04-06
  • 2020-10-30
相关资源
最近更新 更多