我想对文档集合进行查询,每个文档都包含一个数组中的ID。该查询应该是动态的,因为数组中的id经常更改。我已经尝试过了,但是没有用
[HttpPost]
public IActionResult Edit(TestviewModel model)
{
var person = model.Person; // add a breakpoint here, should represent the posted values
}
答案 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)。