我有这个数据结构,在这里组织待办事项以遵循路径/ todos / uid /
{ "metausers" : { "simplelogin:1" : { "displayName" : "John Doe", "provider" : "password", "provider_id" : "1" }, "simplelogin:2" : { "displayName" : "GI Jane", "provider" : "password", "provider_id" : "2" } }, "todos" : { "simplelogin:1" : { "-JUAfv4_-ZUlH7JqM4WZ" : { "completed" : false, "done" : false, "group" : false, "private" : false, "subject" : "First" }, "-JUAfveXP_sqqX32jCJS" : { "completed" : false, "done" : false, "group" : false, "private" : true, "subject" : "Second" }, "-JUAfwXnMo6P53Qz6Fd2" : { "completed" : false, "done" : false, "group" : false, "private" : false, "subject" : "Third" } }, "simplelogin:2" : { "-JUAg9rVemiNQykfvvHs" : { "completed" : false, "done" : false, "group" : false, "private" : false, "subject" : "Q first" }, "-JUAgAmgPwZLPr2iH1Ho" : { "completed" : false, "done" : false, "group" : false, "private" : false, "subject" : "Q second" }, "-JUAgBfF8f7V5R5-XgrY" : { "completed" : false, "done" : false, "group" : false, "private" : true, "subject" : "Q third" } } } }
我想查询待办事项以获取所有记录private:true。使用firebase(angularfire)是否可能,我应该怎么做?还是我应该进一步规范化并安排路径/私人路线,以免走下待办事项?
private:true
WHEREFirebase中没有子句。请查看此线程,以获取有关按多个字段进行搜索的一些出色的结构性技巧,有关数据库样式查询的该线程,有关查询的博客和docs。
WHERE
您的第一种方法应该是分割数据,如何将其读回。类似于以下内容:
/todos/public /todos/private /todos/completed
您还可以按照文档中的说明使用优先级。然后根据优先级提取项目。
如果列表少于一千(如果对数据进行了适当的分区,则应该是一千),那么您可能只需抓取待办事项列表并在客户端对其进行过滤- 对于像这样的短集合,这是一个很好的选择,尤其是在使用像Angular一样强大的库。