【问题标题】:Cloud Functions for Firebase onWrite() promise always times outCloud Functions for Firebase onWrite() 承诺总是超时
【发布时间】:2017-09-01 21:41:57
【问题描述】:

我正在尝试运行云函数并更改数据库上的值,但每次我返回带有或不带有“firebase-admin”模块的承诺时,该函数都会在 60 秒后超时。

这是我的代码:

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

exports.handleDisconnection = functions.database.ref('/pages/{pageId}/listeners/disconnection')
  .onWrite(event => {
    const eventSnapshot = event.data;
    const isDisconnected = eventSnapshot.val();
    const pageId = event.params.pageId;
    console.log('there is a new disconnection on page ' + pageId + ', isDisconnected: ' + isDisconnected);
    if (eventSnapshot.changed() && isDisconnected) {
      console.log('is disconnected true');
      return admin.database().ref('/pages/'+pageId+'/listeners/disconnection').set({ disconnection: false }).then(() => {
        console.log('Write succeeded!'); // this never triggers
      });
    }
});

【问题讨论】:

  • 您在日志中看到is disconnected true 吗?
  • 是的,另一个日志也显示了我的预期
  • 这看起来应该对我有用。我只是做了一些非常相似的事情并且得到了日志并且没有超时:return event.data.adminRef.root.child('bar').set(event.data.val()).then(result => { console.log('ok') })
  • 我把退货换成了你的,它也不起作用:(
  • FWIW:我复制并运行了您的代码,并在日志中看到了 Write succeeded!。在 set() 语句中,您不希望值是 false 而不是 { disconnection: false } 吗?后者将另一个disconnection 段添加到引用路径中。

标签: firebase firebase-realtime-database google-cloud-functions


【解决方案1】:
 if (eventSnapshot.changed() && isDisconnected) {
       console.log('is disconnected true');`
       return admin.database.ref('/...')
       .set({ disconnection: false }, err => {
                 if(!err)  // No error 
                       { console.log("Set Updated"); }
       });

set Methods 有一个回调,它作为对象传入 err 您可以使用 err 来获取操作状态。

【讨论】:

    【解决方案2】:

    原来问题不在代码中。

    解决了更新 Node.js 和 npm 的问题

    使用“当前”版本https://nodejs.org/en/

    【讨论】:

      猜你喜欢
      • 2017-08-26
      • 2018-01-03
      • 2018-04-19
      • 2018-10-11
      • 2017-11-10
      • 2017-08-25
      • 2017-08-31
      • 2019-07-21
      • 2017-09-25
      相关资源
      最近更新 更多