在Firestore集合中查询给定数组的属性成员

时间:2018-10-24 10:22:00

标签: javascript firebase promise nosql google-cloud-firestore

说,我有一个带有值的数组

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

0 个答案:

没有答案