【发布时间】:2018-12-03 04:32:17
【问题描述】:
我已经定义了一个 Firebase 云函数,它在实时数据库 onCreate 触发器上执行。该函数完美地执行了它的预期算法,除了日志总是显示错误:Function returned undefined, expected Promise or value。我已经尝试了很多东西,但我仍然无法消除该错误。代码的重要sn-ps如下。
我已经正确地返回了一个承诺。任何想法如何使错误消失?
index.js
const sendNotificationMessageModule = require('./sendNotificationMessage');
exports.sendNotificationMessage = functions.database.ref( '/Notifications/{pushId}').onCreate((snapshot, context) => {
sendNotificationMessageModule.sendNotificationMessage(snapshot, context, db, admin);
});
sendNotificationMessage.js
代码的第一部分:
exports.sendNotificationMessage = function(snapshot, context, db, admin) {
.
.
.
代码的最后部分:
if(...) {
.
.
.
var androidNode = {};
androidNode[constants.propertyNotificationString] = notificationNode;
message[constants.propertyAndroidString] = androidNode;
return admin.messaging().send(message)
.then((response) => {
console.log('Successfully sent message:', response);
return snapshotNotificationMessage.ref.remove();
})
.catch((error) => {
console.log('Error sending message:', error);
});
}
如您所见,消息发送成功,但错误仍然存在。 当然,实时数据库中的数据也被成功删除了。
【问题讨论】:
-
发布代码时,请发布整个函数,而不仅仅是函数体。看看它是什么样的云功能非常重要。
-
嗨,我看了你的视频!它们对理解承诺非常有帮助。我没有发布整个代码,因为它太长了!所以我只发布了它的结尾部分。该函数是一个实时数据库触发器onCreate,它成功执行了发送消息,但函数仍然退出并出现上述错误。我现在发布第一部分和最后一部分。
标签: javascript firebase firebase-realtime-database firebase-cloud-messaging google-cloud-functions