【发布时间】:2017-03-29 16:18:18
【问题描述】:
今天部署我的函数后,我们的一些函数突然总是超时。我在云功能控制台中看到了这一点。这似乎在嵌套和返回承诺时发生。奇怪的是这种情况以前从未发生过。
这是我的代码。
exports.pushMessageQueue = functions.database.ref('/userPushMessagesQueue/{userId}/{messageId}').onWrite(event => {
if (!event.data.exists()) {
console.log('DOES NOT EXIST!');
return "not exists";
}
console.log("EXISTS!");
const userId = event.params['userId'];
const messageId = event.params['messageId'];
const payload = event.data.val();
return database.ref('devices').orderByChild('user_id').equalTo(userId).once('value', snapshot => {
if (!snapshot.exists()) {
return "no devices found";
}
const devices = snapshot.val();
const deviceTokens = [];
snapshot.forEach(deviceSnap => {
const device = deviceSnap.val();
deviceTokens.push(device['fcm_key']);
});
const removeFromQueue = database.ref(`/userPushMessagesQueue/${userId}/${messageId}`);
console.log('then0');
return removeFromQueue.set(null).then(() => {
console.log('then1');
return admin.messaging().sendToDevice(deviceTokens, payload).then(() => {
console.log('then2');
return "send";
});
}, (error) => {
console.log('error1!');
console.log(error);
});
});
});
在控制台中记录 then0,而不是 then1 和 then2。当我收到推送通知并且条目从队列中删除时。
是不是我做错了什么?
【问题讨论】:
-
从今天开始,我的 Firebase 云功能也遇到了类似的问题。有什么可用的修复方法吗?
标签: javascript firebase firebase-realtime-database google-cloud-functions