如何暂停Javascript映射直到Firebase Firestore完成?承诺、异步/等待或两者兼有
我需要能够映射(或者,如果需要,foreach)一系列帐户。在更新该帐户或将其添加为新帐户之前,我想验证该帐户是否存在于Firebase Firestore中。问题是map一直在运行,然后Firebase Firestore函数最终运行。我试着用Firestore自己的承诺来包装它,但没有成功。我需要一切都井然有序。我知道我的承诺和/或异步/等待在错误的地方。我仍在学习如何正确使用承诺和异步/等待如何暂停Javascript映射直到Firebase Firestore完成?承诺、异步/等待或两者兼有,javascript,node.js,firebase,google-cloud-firestore,Javascript,Node.js,Firebase,Google Cloud Firestore,我需要能够映射(或者,如果需要,foreach)一系列帐户。在更新该帐户或将其添加为新帐户之前,我想验证该帐户是否存在于Firebase Firestore中。问题是map一直在运行,然后Firebase Firestore函数最终运行。我试着用Firestore自己的承诺来包装它,但没有成功。我需要一切都井然有序。我知道我的承诺和/或异步/等待在错误的地方。我仍在学习如何正确使用承诺和异步/等待 let db = admin.firestore(); (async () =&
let db = admin.firestore();
(async () => {
const accountInfo = [{ accountNumber: 'a' }, { accountNumber: 'b' }, { accountNumber: 'c' }];
for (let i = 0, j = accountInfo.length; i < j; i++) {
console.log("i: ", i);
await Promise.all(
accountInfo
.map(account => {
const {accountNumber} = account;
console.log(accountNumber);
// Firebase - Firestore
let docRef = db.collection('accounts').doc(accountNumber);
docRef.get().then(function (doc) {
console.log("doc.exists ", doc.exists)
if (doc.exists) {
firebaseUpate();
}
else {
firebaseAdd();
}
})
})
)
}
})();
我需要的结果是:
Console.log()
删除
Promise.all
,然后在for
循环中等待fordoc
:
let db=admin.firestore();
(异步()=>{
const accountInfo=[
{accountNumber:“a”},
{帐号:“b”},
{accountNumber:“c”}
];
for(设i=0,j=accountInfo.length;i删除承诺。所有,然后在for
循环中等待for文档:
let db=admin.firestore();
(异步()=>{
const accountInfo=[
{accountNumber:“a”},
{帐号:“b”},
{accountNumber:“c”}
];
for(设i=0,j=accountInfo.length;i
[0] i: 0
[0] a
[0] b
[0] c
[0] i: 1
[0] a
[0] b
[0] c
[0] i: 2
[0] a
[0] b
[0] c
[0] doc.exists false
[0] doc.exists false
[0] doc.exists false
[0] doc.exists false
[0] doc.exists false
[0] doc.exists false
[0] doc.exists false
[0] doc.exists false
[0] doc.exists false
[0] i: 0
[0] a
[0] doc.exists false
[0] i: 1
[0] b
[0] doc.exists false
[0] i: 2
[0] c
[0] doc.exists false