Firebase onWrite()的云函数承诺总是超时

Firebase onWrite()的云函数承诺总是超时,firebase,firebase-realtime-database,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Functions,我试图运行一个云函数并更改数据库上的值,但每次我返回一个承诺,无论是否使用“firebase admin”模块,函数都会在60秒后超时 这是我的密码: var functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); exports.handleDisconnection = funct

我试图运行一个云函数并更改数据库上的值,但每次我返回一个承诺,无论是否使用“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
      });
    }
});
set方法有一个回调,它将err作为对象传入
您可以使用err获取操作状态。

结果表明问题不在代码中

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


使用“当前”版本

您是否在日志中看到
已断开连接为真
?是的,另一个日志也显示了我所期望的,这对我来说应该是可行的。我只是做了一些非常类似的事情,得到了日志,没有超时:
return event.data.adminRef.root.child('bar').set(event.data.val())。然后(result=>{console.log('ok')})
我将返回切换到您的,它也不起作用:(FWIW:我复制并运行了您的代码,并在日志中看到
写入成功!
。在
set()
语句中,您不希望值为
false
而不是
{disconnection:false}
?后者向引用路径添加另一个
disconnection
段。
 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"); }
       });