Javascript 依赖于Firestore查询的Firebase响应不起作用

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) => {

取决于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秒时,可能会在日志中显示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不存在