查询 Firestore 集合以获取给定数组的属性成员资格

问题描述 投票:0回答:1

比如说,我有一个包含值的数组

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)
来救援。)

javascript firebase promise nosql google-cloud-firestore
1个回答
0
投票

显然,早在 2019 年,Firestore 中就添加了一个 IN 查询来实现这一目标。 https://firebase.blog/posts/2019/11/cloud-firestore-now-supports-in-queries/

© www.soinside.com 2019 - 2024. All rights reserved.