比如说,我有一个包含值的数组
types = ['jay', 'pigeon', 'crow', 'peacock']
我想用它来根据文档属性
birds
是否包含在 Firestore 集合 type
上进行查询。
所以从
groaney: {
...
type: 'crow'
...
},
chirpie: {
...
type: 'chick'
...
},
jeery: {
...
type: 'jay'
...
}
我们应该得到
groaney: {
...
type: 'crow'
...
},
jeery: {
...
type: 'jay'
...
}
我意识到我可以分别对各个元素进行查询
Promise.all(
types.map(t =>
firebase.firestore().collection('birds')
.where('type', '==', t)
.get()
)
)
然后合并结果。然而,我更愿意使用单个
where()
一次性完成此操作,因为对一堆 Firestore 集合 Promise.all()
执行 where
对我来说似乎是一种资源浪费。
有没有一种优雅/有效的方法来实现这一点?
(顺便说一句,请注意,当涉及到逆问题时,即查询集合中单个值的数组成员身份时,我们可以使用
where('types', 'array-contains', type)
来救援。)
显然,早在 2019 年,Firestore 中就添加了一个 IN 查询来实现这一目标。 https://firebase.blog/posts/2019/11/cloud-firestore-now-supports-in-queries/