Javascript 依赖于Firestore查询的Firebase响应不起作用
取决于Cloud Firestore中是否有具有正确DocumentId的条目。但是,这不起作用,因为我的函数在完成查询之前发送状态200。那我怎么才能让它工作呢 这是我的密码:Javascript 依赖于Firestore查询的Firebase响应不起作用,javascript,firebase,google-cloud-firestore,firebase-admin,Javascript,Firebase,Google Cloud Firestore,Firebase Admin,取决于Cloud Firestore中是否有具有正确DocumentId的条目。但是,这不起作用,因为我的函数在完成查询之前发送状态200。那我怎么才能让它工作呢 这是我的密码: access = false; admin.firebase().collection("tuere").doc(door).collection("eintritt").get().then((snapshot) => { snapshot.forEach((doc) => {
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秒时,可能会在日志中显示open door uid。
如何解决此问题以及如何使函数运行得更快?当承诺解决时,您应该发送HTTP响应,因此在查询承诺的then范围内:如下所示:
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响应,这就是我添加res.status500.senderr的原因;在劫难逃
我建议你看看道格·史蒂文森的视频:
还有一点让我惊讶:你不应该用
admin.firestore().collection("tuere").doc(door)....
而不是
admin.firebase().collection("tuere").doc(door)
我必须查看参考资料,但我感觉admin.firebase不存在