1

我正在尝试使用 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...]
  • 使用 97 MB 以 974.16 毫秒结束执行

显然 Firebase 正在为我生成一个密钥,但密钥 [-LdVpr...] 没有添加到我的数据库中。可能会发生什么,我该如何进一步解决这个问题?

4

1 回答 1

2

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()接受第二个参数 a "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 秒的东西。

于 2019-04-28T04:11:08.217 回答