Javascript 检索数据时Firestore返回true(等待数据发送)
我对这段代码有点问题:Javascript 检索数据时Firestore返回true(等待数据发送),javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我对这段代码有点问题: 函数usernameExists(用户名){ const result=db.collection('users')。其中(“用户名”、“=”、用户名)。get() .then(函数(querySnapshot){ querySnapshot.forEach(函数(doc){ console.log(“真”); 返回true; }); 控制台日志(“假”); 返回false; }) .catch(错误=>{ 返回错误消息; }); }这是因为您没有返回。您应该按照以下步
函数usernameExists(用户名){
const result=db.collection('users')。其中(“用户名”、“=”、用户名)。get()
.then(函数(querySnapshot){
querySnapshot.forEach(函数(doc){
console.log(“真”);
返回true;
});
控制台日志(“假”);
返回false;
})
.catch(错误=>{
返回错误消息;
});
}
这是因为您没有返回。您应该按照以下步骤进行操作:
function usernameExists(username) {
return db.collection('users').where("username", "==", username).get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log("true");
// Do something
});
// return something;
})
.catch(error => {
return error.message;
});
}
例如:
function usernameExists(username) {
return db.collection('users').where("username", "==", username).get()
.then(function(querySnapshot) {
const theReturnedArray = [];
querySnapshot.forEach(function(doc) {
console.log("true");
theReturnedArray.push(doc.get("theField"));
});
return theReturnedArray;
})
.catch(error => {
return error.message;
});
}
或者,由于您在评论中说“我只是想看看是否已经使用了用户名”:
请注意,
usernameExists()
本身是一个异步函数,因此您需要使用或异步/等待:
usernameExists(username)
.then(result => {
console.log(result);
});
请说明您是如何使用
usernameExists
函数的,或者尽可能共享部分代码;我只是想看看是否已经使用了用户名。您需要使用async wait生成函数以获得此类类型响应。裁判:
usernameExists(username)
.then(result => {
console.log(result);
});