具体取决于Cloud Firestore中是否存在具有正确DocumentId的条目。但是,这不起作用,因为我的函数在完成查询之前发送状态200。那么我该如何才能实现这一目标呢?
这是我的代码:
access = false;
admin.firebase().collection("tuere").doc(door).collection("eintritt").get().then((snapshot) => {
snapshot.forEach((doc) => {
if(doc.id === uid){
access = true;
console.log("May open door " + uid);
}
});
}).catch((err) => {
console.log(err);
});
res.status(200).send(access);
当我在Chrome中打开标签并让它加载" false"出现,但是当我等待15秒钟时,可能会打开门(uid)"出现在日志中。 我该如何解决这个问题?如何让我的功能更快地运行?
答案 0 :(得分:1)
你应该在promise解析时发送HTTP响应,所以在查询保证的那个时间内:就像那样:
access = false;
admin.firebase().collection("tuere").doc(door).collection("eintritt").get()
.then((snapshot) => {
snapshot.forEach((doc) => {
if(doc.id === uid){
access = true;
console.log("May open door " + uid);
}
});
res.status(200).send(access);
}).catch((err) => {
console.log(err);
res.status(500).send(err);
});
此外,如果出现错误,您应该发送HTTP响应,这就是我在catch中添加res.status(500).send(err);
的原因
我建议你看看Doug Stevenson的这段视频:https://www.youtube.com/watch?v=7IkUgCLr5oA
还有一点令我感到惊讶:你不能使用
admin.firestore().collection("tuere").doc(door)....
而不是
admin.firebase().collection("tuere").doc(door)
我必须查看参考资料,但我觉得admin.firebase()不存在。