Firebase 函数 - ReferenceError:未定义事件
Posted
技术标签:
【中文标题】Firebase 函数 - ReferenceError:未定义事件【英文标题】:Firebase Functions - ReferenceError: event is not defined 【发布时间】:2019-04-26 17:06:07 【问题描述】:我正在尝试做一个简单的通知功能 但每次我触发该功能时,我都会收到错误
TypeError:无法读取未定义的属性“参数” 在exports.sendNotification.functions.database.ref.onWrite (/user_code/index.js:23:32) 在 cloudFunctionNewSignature (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:105:23) 在 cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:135:20) 在 /var/tmp/worker/worker.js:758:24 在 process._tickDomainCallback (internal/process/next_tick.js:135:7)
或者我得到错误
TypeError:无法读取未定义的属性“user_id”
我得到了here的答复
但我根本没有帮助,而且我找不到问题所在。这是我的代码
'use strict'
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.sendNotification = functions.database.ref('/notifications/user_id/notification_id').onWrite((change,context) =>
const user_id = event.params.user_id;
const notification_id = event.params.notification_id;
console.log('We have a notification from : ', user_id);
if(!context.data.val())
return console.log('A Notification has been deleted from the database : ',
notification_id);
const fromUser =admin.database().ref(`/notifications/$user_id/$notification_id`).once('value');
return fromUser.then(fromUserResult =>
const from_user_id = fromUserResult.val().from;
console.log('You have new notification from : ', from_user_id);
const userQuery = admin.database().ref(`Users/$from_user_id/name`).once('value');
const deviceToken = admin.database().ref(`/Users/$user_id/device_token`).once('value');
return Promise.all([userQuery, deviceToken]).then(result =>
const userName = result[0].val();
const token_id = result[1].val();
const payload =
notification:
title : "New Friend Request",
body: `$userName has sent you request`,
icon: "default",
click_action : "none"
,
data :
from_user_id : from_user_id
;
return admin.messaging().sendToDevice(token_id, payload).then(response =>
return console.log('This was the notification Feature');
);
);
);
);
【问题讨论】:
***.com/questions/49746905/… ***.com/questions/49647170/… 【参考方案1】:你从未定义过event
,所以它是未定义的。您正在尝试访问未定义变量的属性。你是说context.params.user_id
吗?
(您可能使用的是过时的教程。我在 Stack Overflow 上经常看到类似的糟糕的“sendNotification”函数。请告诉作者。)
【讨论】:
我应该在哪里定义它,我读到了这个事件,现在不能使用它 这就是为什么我建议你改用context
。
应该怎么用,能不能写个使用代码?
你看这里onWrite((change, context)
我根本没有使用该事件,我将用户ID定义为const user_id = context.params.user_id;
以上是关于Firebase 函数 - ReferenceError:未定义事件的主要内容,如果未能解决你的问题,请参考以下文章
Firebase 云函数对另一个 Firebase 云函数的 http 请求
Firebase 函数执行和订阅由 firebase 函数更新的列表
Vue Firebase firebase/auth 不工作,但 firebase/firestore 工作正常。 “身份验证不是函数”