Функция Twilio не пишет в Firebase - PullRequest
1 голос
/ 28 апреля 2019

Я пытаюсь записать в свою базу данных Firebase, используя функцию Twilio (почти такую ​​же, как функция AWS Lambda, если вам это знакомо), но я не могу этого сделать. Firebase генерирует для меня ссылочный ключ, но в моей базе данных Firebase ничего не появляется, когда я проверяю его. Я не вижу сообщения об ошибке из моей функции. Вот с чем я работаю.

var firebase = require('firebase');

exports.handler = function(context, event, callback) {

  var firebaseConfigs = {
    apiKey: "[my_api_key]",
    authDomain: "[my_domain].firebaseapp.com",
    databaseURL: "https://[my_domain].firebaseio.com",
    projectId: "[my_project_id]",
    storageBucket: "[my_domain].appspot.com",
    messagingSenderId: "[my_sender_id]"
  };

  if (!firebase.apps.length) {
    firebase.initializeApp(firebaseConfigs);
    console.log('Initialized Firebase app');    
  }

  console.log('saving to firebase');

  var ref = firebase.database().ref().push({
    emailAddress: event.emailAddress,
    test: 'test'
  });

  console.log('saved to ',ref.key)

  setTimeout(function() {}, 3000);

  callback();
};

В журналах функций я вижу следующее:

  • Выполнение началось
  • Инициализированное приложение Firebase
  • сохранение в базе данных
  • сохранено в [-LdVpr ...]
  • Выполнение завершилось за 974,16 мс с использованием 97 МБ

Очевидно, что Firebase генерирует для меня ключ, но ключ [-LdVpr ...] не добавлен в мою базу данных. Что может происходить, и как я могу дополнительно устранить это?

1 Ответ

2 голосов
/ 28 апреля 2019

С Execution ended in 974.16ms в журналах звучит как

setTimeout(function() {}, 3000);
callback(); 

на самом деле не выполняет то, что вы намеревались сделать ( подождите 3 секунды, а затем вернитесь к Twilio? ).

Я бы попробовал это ...

setTimeout(function() {
  callback();
}, 3000);

... если это то, что вы хотите или должны сделать.

Обновление после прочтения этого https://firebase.google.com/docs/reference/js/firebase.database.Reference.html#push

push() принимает второй параметр, "Callback called when write to server is complete.", поэтому я также попробую что-то вроде этого:

var ref = firebase.database().ref().push({
  emailAddress: event.emailAddress,
  test: 'test'
}, function (error) {
  if (error) {
    console.log(error);
    callback();
  } else {
    console.log('Push successful');
    callback();
  }

});

возможно, вам вообще не нужны эти 3 секунды.

...