我想组织有关将文档添加到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;语句终止同步函数。

09-30 19:42
查看更多