Облачная функция Firebase .onWrite всегда регистрирует нулевой или неопределенный - PullRequest
0 голосов
/ 06 мая 2018

Я в недоумении, почему в консоль не войдет ничего, кроме «null» или «undefined». Я тестирую это из интерфейса браузера тестирования Google Cloud Platform. Я также попытался записать EVENT (вместо CHANGE и CONTEXT) с тем же результатом. Я также попытался открыть правила безопасности, но это также не помогло. Любой совет высоко ценится.

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

exports.fanOutLink = functions.database.ref('/userLink/BLAH584H5BLAH30BLA/link').onWrite((change, context) => {
  console.log('value is:'+change.before.val());
});

А вот JSON, который я использую для проверки кода выше:

{
"userLink": {
      "BLAH584H5BLAH30BLA": {
        "link": "https://blabla.com"
      }
    }
}

1 Ответ

0 голосов
/ 06 мая 2018

Облачная функция должна всегда возвращать Обещание (или, если вы не можете, хотя бы значение).

Ваша функция должна работать как есть, но с задержкой и ошибкой в ​​журнале, например «Функция вернула неопределенное, ожидаемое обещание или значение». Может случиться, что экземпляр Cloud Functions, выполняющий вашу функцию, завершает работу до того, как ваша функция успешно запишет сообщение в журнал.

Если вы измените свой код следующим образом, вы получите (квази) мгновенный ответ:

exports.fanOutLink = functions.database.ref('/userLink/BLAH584H5BLAH30BLA/link').onWrite((change, context) => {
    console.log('value is:'+change.before.val());
    return true;
});

Я бы посоветовал вам взглянуть на эти 2 видео от команды Firebase: https://www.youtube.com/watch?v=7IkUgCLr5oA&t=511s и https://www.youtube.com/watch?v=652XeeKNHSk&t=37s


После нашего «обсуждения» в комментариях ниже, похоже, что вы используете новый синтаксис Cloud Functions, но со старой версией библиотеки. Посмотрите на этот документ: https://firebase.google.com/docs/functions/beta-v1-diff, и сделайте, как указано, перед повторным развертыванием:

Запустите следующее в папке функций:

npm install firebase-functions@latest --save

npm installfirebase-admin@5.11.0 --save

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