有没有一种方法可以查询循环中有很多“ where”的Firestore Collection?

时间:2019-06-19 08:51:11

标签: typescript firebase google-cloud-firestore

我想对文档集合进行查询,每个文档都包含一个数组中的ID。该查询应该是动态的,因为数组中的id经常更改。我已经尝试过了,但是没有用

[HttpPost]
public IActionResult Edit(TestviewModel model)
{
    var person = model.Person; // add a breakpoint here, should represent the posted values
}

1 个答案:

答案 0 :(得分:3)

要查询Firestore集合,您需要使用get()方法

执行const postsCol = await admin.firestore().collection('posts')不会查询数据库,而只是定义一个CollectionReference。对于postsCol.where('sentBy', '==', elem)postsCol.orderBy("sentAt", "desc").limit(5)来说,它们相同:它们定义了Query,但不获取数据库。

使用get()方法对集合的每个查询都是异步操作:get()方法返回一个Promise,并根据查询结果进行解析。

由于要并行触发多个查询,因此应使用Promise.all(),如下所示:

const queries = [];

idsList.forEach(elem => {
   queries.push(admin.firestore().collection('posts').where('sentBy', '==', elem).get());
})

Promise.all(queries)
.then(results => {
  //Do whatever you want with the results array which is an array of QuerySnapshots
  //See https://firebase.google.com/docs/reference/js/firebase.firestore.QuerySnapshot.html
})

注意:如果您在Cloud Function中使用此代码,请不要忘记返回异步操作返回的Promise(包括Promise.all()返回的Promise)。