在foreach语句中的Firestore复合查询

By simon at 2018-02-07 • 0人收藏 • 33人看过

如果可能,我想要一些帮助,我想要做一个Firestore复合查询 里面2 foreach语句,因为我需要得到所有的rel前卫数据回来了 匹配循环数组中的内容。

arenas.forEach((arenasElement: any) => {
    sports.forEach((sportsElement: any) => {
        firebaseAdmin.firestore().collection('leagues')
            .where('arenaUid', '==', arenasElement)
            .where('sportUid', '==', sportsElement)
            .get()
            .then((querySnapshot: any) => {
                querySnapshot.docs.map((element: any) => {
                    leaguesArray.push(element.data())
                })
            })
            .catch((error) => {
                console.log(error)
                res.send(error)
            })
    })
})
我需要所有的相关结果存储在数组中,因为它们都是 对象&我想在所有查询完成时返回该数组 像我一样执行需要所有的数据。 我试过看诺言和包装它,但我没有成功 物。 任何帮助将很乐意appreciated!

1 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

这应该做的伎俩:

var promises = [];
arenas.forEach((arenasElement: any) => {
    sports.forEach((sportsElement: any) => {
        promises.push(firebaseAdmin.firestore().collection('leagues')
            .where('arenaUid', '==', arenasElement)
            .where('sportUid', '==', sportsElement)
            .get());
    })
})
Promise.all(promises).then((snapshots: any) => {
    var leaguesArray = [];
    snapshots.forEach((querySnapshot: any) => {
        querySnapshot.docs.map((element: any) => {
            leaguesArray.push(element.data())
        })
    })
    res.send(JSON.stringify(leaguesArray));
})
.catch((error) => {
    console.log(error)
    res.send(error)
})
你会注意到我的变化很小:   1.与co一起创建一个promise数组de载入数据。   2.将then()的代码放入一个then(),所有数据加载完成后触发(with Promise.all())。

登录后方可回帖

Loading...