Firebase onWrite()的云函数承诺总是超时
我试图运行一个云函数并更改数据库上的值,但每次我返回一个承诺,无论是否使用“firebase admin”模块,函数都会在60秒后超时 这是我的密码: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
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"); }
});