我正在使用 Firestore 和 Angularfire2 创建一个 Ionic 应用程序。
我的数据库结构如下:
- creators
- CREATOR_ID
- name (string)
- description (string)
- posts (map)
- category1 (array)
- [POST1, POST2, POST3]
- category2 (array)
- [POST3, POST4, ...]
创建者能够创建帖子/文章。当创建者创建文章时,他可以指定帖子属于哪个类别!
然而,关于应用程序的事情是,当用户想要按类别过滤时,它将带来所有包含用户选择的类别中至少一篇文章的创作者(而不是带来该类别中的所有文章)。
因此,基于上述结构,我尝试了以下操作:
this.afs.collection<Creator>('creators', ref => ref.where("posts.category1", '>', ""));
但它什么都不返回!
大家有什么建议吗?
谢谢!
正如我在您的数据库架构中看到的,您的category1
和category2
是数组。以下where()
函数调用:
.where("posts.category1", '>', "POST1")
如果您的类别 (category1
和category2
) 是类型Map
而不是数组,并且您会被查询特定帖子,则本可以使用。为了解决这个问题,有两种方法:
第一个是从array
->更改类别的类型map
并使用上面的行代码,第二个将使用:
.where("posts.category1", , "array-contains", "POST1")
但请注意,上述方法均无法帮助您确定数组是否至少包含一个元素。为此,您应该添加一个侦听器并检查该特定数组/映射是否存在。
见这里更多的信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句