【发布时间】:2018-01-18 09:38:35
【问题描述】:
我有一个无法在谷歌云环境中运行的 firebase 云功能。我的功能在每个环境中都运行良好,包括本地模拟器,除了实际的云。它到达了我向数据库查询用户记录的行(下面的第 9 行)。它会挂在那里一段时间,然后超时。关于为什么会发生这种情况的任何想法?事件输入很好,并且具有正确的用户 ID。
const admin = require('firebase-admin');
const functions = require('firebase-functions');
admin.initializeApp(functions.config().firebase);
admin.database.enableLogging(true);
exports.createContract = functions.database.ref('/messages/{messageId}').onCreate(event => {
let data = event.data.val();
admin.database().ref(`/users/${data.user.id}`).once('value').then(user => {
if (user.val() === null) {
return reject(`User ${data.user.id} does not exist`);
} else {
data.userData.push(user.val());
}
}).catch((error) => {
console.log(error);
});
// do other stuff here
});
来自管理数据库连接的调试日志看起来也很好(一旦到达有问题的代码就会打印出来,然后继续挂起直到超时):
p:0: Browser went online.
p:0: Listen called for /users/-idabc123 default
p:0: Making a connection attempt
p:0: Auth token refreshed
getToken() completed. Creating connection.
c:0:0: Connection created
c:0:0:0 Websocket connecting to wss://xxxxxx.firebaseio.com/.ws?v=5
c:0:0:0 Websocket connected.
c:0:0: Realtime connection established.
p:0: connection ready
p:0: reportStats {"c":{"sdk.node.4-8-2":1}}
p:0: {"r":1,"a":"s","b":{"c":{"sdk.node.4-8-2":1}}}
p:0: {"r":2,"a":"gauth","b":{"cred":"xxxxxxxxx"}}
p:0: Listen on /users/-idabc123 for default
p:0: {"r":3,"a":"q","b":{"p":"/users/-idabc123","h":""}}
p:0: from server: {"r":1,"b":{"s":"ok","d":""}}
c:0:0: Primary connection is healthy.
【问题讨论】:
标签: node.js firebase firebase-realtime-database google-cloud-functions