Twilio 函数不写入 Firebase

Twilio Function not writing to Firebase

我正在尝试使用 Twilio 函数(与 AWS Lambda 函数几乎完全相同,如果您熟悉的话)写入我的 Firebase 数据库,但我无法这样做。 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...] 没有添加到我的数据库中。可能发生了什么,我该如何进一步解决这个问题?

日志中有 Execution ended in 974.16ms,听起来像

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

并没有真正按照您的意愿去做(等待 3 秒然后 return 到 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 秒的东西。