我正在使用Firestore和Angularfire2创建一个Ionic应用程序。
我的数据库结构如下:
Database.getInstance().doQueryStuff(); // doQueryStuff is just an example of a method call.
创建者可以创建帖子/文章。当创建者创建文章时,他可以指定帖子所属的类别!
不过,与应用有关的事情是,当用户想要按类别进行过滤时,它将把所有至少包含一个帖子的CREATORS包含在用户选择的类别中(而不是将所有文章都包含在该类别中)。
因此,基于上述结构,我尝试了以下操作:
- creators
- CREATOR_ID
- name (string)
- description (string)
- posts (map)
- category1 (array)
- [POST1, POST2, POST3]
- category2 (array)
- [POST3, POST4, ...]
但是它什么也不返回!
你们有什么建议吗?
谢谢!
答案 0 :(得分:0)
正如我在您的数据库架构中看到的那样,您的category1
和category2
是数组。以下where()
函数调用:
.where("posts.category1", '>', "POST1")
如果您的类别(category1
和category2
)的类型为Map
而不是数组,并且已经被查询特定帖子,那么将可以使用。为了解决这个问题,有两种方法:
第一种方法是将类别的类型从array
-> map
更改为使用上面的代码,第二种方法是使用:
.where("posts.category1", , "array-contains", "POST1")
但是请注意,以上方法都无法帮助您确定数组是否包含至少一个元素。为此,您应该添加一个侦听器,并检查该特定数组/映射是否存在。
请参阅here更多信息。