Firebase Cloud Firestore-如何同时查询两个子集合?

时间:2018-07-01 21:33:04

标签: javascript node.js firebase google-cloud-firestore google-cloud-functions

我想查询DocumentReference的两个子集合。

我尝试执行以下操作:

var promise1 = admin.firestore().collection(`players/${id}/collection1`).get();
var promise2 = admin.firestore().collection(`players/${id}/collection2`).get();

return Promise.all(promise1, promise2)

问题是,通过执行以下操作,我得到以下错误:

  

TypeError:(var)[Symbol.iterator]不是函数       在Function.all(本机)       在exports.onSubmission.functions.firestore.document.onCreate(/user_code/index.js:671:20)

因此,我尝试将它们嵌套如下,并且效果很好。

 return admin.firestore().collection(`players/${id}/collection1`).get().then(foundersSnapshot => {
    return admin.firestore().collection(`players/${id}/collection2`).get().then(metricsSnapshot => {

但是,在部署时,我会收到警告

  

避免嵌套承诺

那么,这种情况下的最佳做法是什么?我更喜欢通过Promise.all进行操作,但这是行不通的。另外,它会在then(results => {中输出两个集合作为结果。因此,在这种情况下,我可以安全地将results[0]视为“ collection1”,并将“结果[1]”视为“ collection2”吗?

1 个答案:

答案 0 :(得分:1)

Promise.all()需要单个数组参数。注意promise1promise2周围的方括号,它们构成一个内联数组:

Promise.all([promise1, promise2])