我想组织有关将文档添加到Firestore的发送推送通知。我正在使用来自Firebase网站的示例中的代码来处理node.js。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
var message = {
notification: {
title: 'title!',
body: 'body'
},
topic: "all"
};
exports.createRequest = functions.firestore
.document('Requests/{RequestsId}')
.onCreate((snap, context) => {
console.log('We have a new request');
// Send a message to devices subscribed to the provided topic.
admin.messaging().send(message)
.then((response) => {
console.log('Successfully sent message:', response);
}).catch((error) => {
console.log('Error sending message:', error);
});
return 0;
});
尝试部署时出现错误:
每个then()应该为字符串
.then((response) => {
返回一个值或抛出Promise / always-return” 最佳答案
更改此:
admin.messaging().send(message)
.then((response) => {
console.log('Successfully sent message:', response);
}).catch((error) => {
console.log('Error sending message:', error);
});
return 0;
});
变成这个:
return admin.messaging().send(message)
.then((response) => {
console.log('Successfully sent message:', response);
return null;
}).catch((error) => {
console.log('Error sending message:', error);
});
});
您需要正确地终止函数,以便避免运行太长时间或无限循环的函数产生过多的费用。
您可以使用以下方式终止功能:
通过返回JavaScript承诺来解析执行异步处理的函数(也称为“后台函数”)。
使用
res.redirect()
,res.send()
或res.end()
终止HTTP函数。用
return;
语句终止同步函数。