从firestorefirebase数据库查询数据时从承诺中取出一个变量- Javascript &


let savedArrayUID = []; let savedArrayEmails = [];
function pullIt(emailSearch) {
db.collection(collectionName).where('email', '==', emailSearch).get()
.then((querySnapshot) => {
querySnapshot.forEach((doc) => {
savedArrayUID.push(doc.id);
savedArrayEmails.push(doc.data());
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
// saved.   push(doc.id);
return savedArrayUID; 
})
});
}

我可以从数据库中查询数据,但不能将变量拉出函数的范围。我想使用这个功能来通过电子邮件来查找保存在我的数据库中的个人资料的信息。

我真的很难理解承诺在这里有什么帮助。我有一种感觉,这个问题已经解决了,但是我到处都找不到答案。

有两个步骤:

  1. 确保你的数据从你的pullIt(作为承诺)。
  2. 然后正确调用pullIt,等待promise解析。

在代码中,您缺少顶级返回pullIt代码:

function pullIt(emailSearch) {
// 👇
return db.collection(collectionName).where('email', '==', emailSearch).get()
.then((querySnapshot) => {
querySnapshot.forEach((doc) => {
savedArrayUID.push(doc.id);
savedArrayEmails.push(doc.data());
})
return savedArrayUID; // 👈
});
}

然后当调用pullIt时,您需要使用awaitthen,以确保在您尝试访问结果之前完成pullIt

:

pullIt("yourSearchTeam").then((results) => {
// TODO: use your results here
})

或者(在async上下文中):

const results = await pullIt("yourSearchTeam")
// TODO: use your results here

最新更新