未通过 firebase 函数发送通知。 “未定义”登录控制台
Posted
技术标签:
【中文标题】未通过 firebase 函数发送通知。 “未定义”登录控制台【英文标题】:Notification not being sent via firebase functions. "undefined" logged in console 【发布时间】:2020-01-28 22:16:48 【问题描述】:我正在尝试根据其令牌向所有设备发送示例通知,但是该令牌被记录为“未定义”,并且通知随后无法传递
我的代码中的以下几行成功地向我显示了数据库中的数据:
const notificationSnapshot = change.after.val(); //get new value
console.info(notificationSnapshot);
但是,尽管上述检索数据成功,但以下给出“未定义”。
const userToken = notificationSnapshot.token;
console.info(userToken);
这不是检索令牌以将通知发送到我的 firebase 数据库中所有已注册设备的正确方法吗?
我的整个函数(index.js)
// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');
// The Firebase Admin SDK to access the Firebase Realtime Database.
const admin = require('firebase-admin');
admin.initializeApp();
exports.sendSampleNotification = functions.database.ref('/User')
.onWrite((change, context) =>
const notificationSnapshot = change.after.val(); //get new value
const userToken = notificationSnapshot.token;
const name = notificationSnapshot.name;
const surname = notificationSnapshot.surname;
console.info(notificationSnapshot);
console.info(userToken);
var message =
notification:
title: 'test title',
body: 'test message'
,
token: userToken
;
admin.messaging().send(message).then((response) =>
console.log("Message sent successfully:", response);
return response;
)
.catch((error) =>
console.log("Error sending message: ", error);
);
);
【问题讨论】:
你能把你写的对象显示在User
节点下吗?换句话说,你用console.info(notificationSnapshot);
得到了什么?你确定这个对象有一个令牌属性吗?
代码的所有缩进都丢失了,难以阅读。 :-( 如果您返回,粘贴它,然后用三个反引号再次格式化它会很有帮助,这样更容易理解。
此外,您似乎没有返回当函数中的所有异步工作完成时解决的承诺。简单地在 promise 上调用 then/catch 并不足以让 Cloud Functions 正确处理它。
【参考方案1】:
我想说您的问题与 this one 非常相似,因为由于执行时间,您缺少令牌(显示为未定义),或多或少是 Doug 指出的。
请注意,该解决方案依赖于考虑执行时间,而且我还看到在某些方法执行中实现有所不同,但我会说将军们指向同一个方向。
【讨论】:
以上是关于未通过 firebase 函数发送通知。 “未定义”登录控制台的主要内容,如果未能解决你的问题,请参考以下文章
Firebase 函数 - 发送推送并收到错误消息“TypeError:无法将未定义或 null 转换为对象”[关闭]
Firebase 云函数 - 返回未定义、预期的 Promise 或值
函数返回未定义、预期的 Promise 或值 Firebase 日志错误
Firebase 函数 - ReferenceError:未定义事件