【发布时间】: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