gpt4 book ai didi

javascript - 调用 FireStore 的函数总是返回 undefined

转载 作者:行者123 更新时间:2023-11-30 14:40:43 26 4
gpt4 key购买 nike

我正在尝试实现一个函数来检查我的 FireStore 数据库中是否存在一个给定 ID 的文档。问题是我的 fire_PatronExists 函数总是返回 undefined

const patronsRef = db.collection("patrons");

alert(fire_PatronExists(user.uid));

function fire_PatronExists(id) {

patronsRef.doc(id).get().then(function(doc) {
// return doc.exists();
if (doc){return true}else {return false}
}).catch(function(error) {
console.log("Error getting document:", error);
});
}

最佳答案

您的函数返回未定义的事实是完全正常的:get()是一个异步方法,所以你放在then里面的return不会在fire_PatronExists里面执行;稍后会执行。有一个 great SO article这解释了同步和异步执行之间的区别。

有不同的解决方案,具体取决于您使用的 JavaScript 版本。一个肯定有效的方法是将回调函数传递给 fire_PatronExists并将结果传递给该函数。

这看起来像那样(未测试):

const patronsRef = db.collection("patrons");

fire_PatronExists(user.uid, function(exists) {
alert(exists);
});

// Remember though, if you put code here, it will be executed in parallel
// with the code you put inside your callback.

function fire_PatronExists(id, callback) {

patronsRef.doc(id).get().then(function(doc) {

}).catch(function(error) {
console.log("Error getting document:", error);
});
}

不过,使用回调会变得非常困惑。如果您使用的是最新版本的 JavaScript,您可能需要 read about asyncawait关键字,它们可以大大提高代码的可读性。

关于javascript - 调用 FireStore 的函数总是返回 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49712000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com