Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何暂停Javascript映射直到Firebase Firestore完成?承诺、异步/等待或两者兼有_Javascript_Node.js_Firebase_Google Cloud Firestore - Fatal编程技术网

如何暂停Javascript映射直到Firebase 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 () =&

我需要能够映射(或者,如果需要,foreach)一系列帐户。在更新该帐户或将其添加为新帐户之前,我想验证该帐户是否存在于Firebase Firestore中。问题是map一直在运行,然后Firebase Firestore函数最终运行。我试着用Firestore自己的承诺来包装它,但没有成功。我需要一切都井然有序。我知道我的承诺和/或异步/等待在错误的地方。我仍在学习如何正确使用承诺和异步/等待

    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
循环中等待
for
doc

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