Функция Firebase всегда заканчивается с таймаутом - PullRequest
0 голосов
/ 29 ноября 2018

Я использую функцию Firebase для создания уведомлений с помощью облачных сообщений.Но я всегда получаю эту ошибку:

Function execution took 60006 ms, finished with status: 'timeout'

но уведомление работает.

Это код, который я использую в index.js:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();


exports.SendNotification = functions.https.onRequest((req, res) => {  

  var payload = {
      notification: {
         title: "this is a test",
         body: req.rawBody.toString('utf8')
      }
  }

  return admin.messaging().sendToTopic("all", payload);

});

Должен ли я реализовать ответ?Когда, как мне это сделать?

J3nsis

1 Ответ

0 голосов
/ 29 ноября 2018

Облачная функция, запускаемая по протоколу HTTPS, завершается, когда отправляет ответ вызывающей стороне.Поскольку ваш код никогда не отправляет ответ, код продолжает работать до заданного времени ожидания (которое по умолчанию составляет 1 минуту).

Чтобы правильно завершить функцию после завершения, отправьте результат обратно после завершения вызова FCM:

admin.messaging().sendToTopic("all", payload).then(() => {
  res.status(200).send("ok");
}).catch((err) => {
  res.status(500).send(err);
});

Я рекомендую прочитать этот раздел в документации:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...