Проблема с Messaging () в node.js для Firebase - PullRequest
1 голос

Я хочу организовать отправку push-уведомлений о добавлении документа в 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) => {

1 Ответ

1 голос
/ 19 мая 2019

Измените это:

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.

Завершение функций HTTP с помощью res.redirect(), res.send() или res.end().

Завершение синхронной функции с помощью оператора return;.

...