【发布时间】:2020-02-23 18:43:14
【问题描述】:
我需要能够映射(或者如果需要,foreach)一组帐户。我想在更新或将其添加为新帐户之前验证该帐户是否存在于 Firebase Firestore 中。问题是地图继续运行,然后 Firebase Firestore 功能最终运行。我尝试将 Firestore 包装在它自己的承诺中,但它没有用。我需要一切正常运行。我知道我的 Promise 和/或 Async/Await 在错误的地方。我仍在学习如何正确使用 Promise 和 async/await。
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();
}
})
})
)
}
})();
我得到的结果:
[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
我需要的结果: Console.log()
[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
【问题讨论】:
标签: javascript node.js firebase google-cloud-firestore