Как выполнить NumChildren () внутри запланированной задачи в Firebase? - PullRequest
0 голосов
/ 15 июня 2019

Я пытаюсь посчитать количество детей каждые 5 минут.Я пытался написать код для запуска каждые X минут, и каждый раз, когда он запускается, он вычисляет количество дочерних элементов.

Я собрал воедино коды из документации Firebase для запланированных функций и для снимков, но я, вероятно, что-то упускаю.

exports.scheduledFunction = functions.pubsub.schedule('every 5 
minutes').onRun((context) => {
  var ref = firebase.database().ref("location/");
  ref.once("value")
   .then(function(snapshot) {
     var a = snapshot.numChildren(); // 1 ("name")
    });
});

При попытке развертывания в облаке Firebase получаю консольную ошибку:

8: 3 Ошибка Ожидаемый catch () или обещание возврата/ catch-or-return

9: 11 предупреждение Неожиданное выражение функции Предпочитаемая-стрелка-обратный вызов

9: 11 Ошибка Каждое then () должно возвращать значение или генерировать обещание / всегда возвращаться

1 Ответ

1 голос
/ 15 июня 2019

Поскольку вызов once() загружает данные из Firebase асинхронно, вы должны сообщить Cloud Functions, когда ваш код готов.Вы делаете это, возвращая обещание из кода верхнего уровня, а затем значение изнутри.

Примерно так:

exports.scheduledFunction = functions.pubsub.schedule('every 5 
minutes').onRun((context) => {
  var ref = firebase.database().ref("location/");
  return ref.once("value")
   .then(function(snapshot) {
     var a = snapshot.numChildren(); // 1 ("name")
     return true;
    });
});

См. Также:

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