【发布时间】:2017-11-15 10:12:18
【问题描述】:
supportChat: function(){
return functions.https.onRequest((req, res) => {
var userId = req.query.userId;
var object = {};
db.ref("/users/-KwZ2N38Q6a1a87p982/threads").orderByKey().once('value').then(function(snapshot) {
var snap = snapshot.val();
var keys = Object.keys(snap);
for (var i = 0; i < keys.length; i++){
k = keys[i];
db.ref("/threads/"+k+"/lastMessage").orderByKey().once('value').then(function(snapshot){
var snapshot = snapshot.val();
if (snapshot[i]["sender"] != "-KwZ2N38Q6a1a87p982"){
object[snap[i]["messageID"]] = snapshot;
}
});
}
console.log(object);
return res.status(200).send(object);
});
});
},
我数据库中的每个用户都有一个线程子节点,它显示了他们正在进行的所有聊天线程。然后我们有数据库的另一个线程部分,其中包含该线程的所有数据。
我要做的是对照数据库的线程部分检查特定用户的线程 ID,以查找线程中最后一条消息不是由我(当前用户)发送的所有线程。
我不知道我为什么要为此苦苦挣扎。将满足我条件的每个线程的所有 snapshot.val() 一次性发送到端点的正确方法是什么?也许我的方法很遥远。
【问题讨论】:
标签: javascript node.js firebase firebase-realtime-database google-cloud-functions