Den*_*nis 36 json firebase angularfire
我有这个数据结构,其中todos被组织为遵循path/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"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想查询待办事项以获取所有记录private:true.这可能是使用firebase(angularfire),我应该怎么做?或者我应该更多地反规范化并安排路径/私人以避免走下去待办事项?
Mat*_*att 55
假设你有uid,这应该是直截了当的:
var uid = "simplelogin:1";
var todosRef = new Firebase("https://yourdb.firebaseio.com/todos/" + uid);
var privateTodosRef = todosRef.orderByChild("private").equalTo(true);
var privateTodos;
privateTodosRef.on("value", function(response) {
privateTodos = response.val();
});
Run Code Online (Sandbox Code Playgroud)
这应该返回一个包含所有这个用户的私人待办事项的对象,由他们的待办事项键组织(即"-JUAfv4_-ZUlH7JqM4WZ".如果你想使用Angularfire,你可以将它包装在$ firebaseArray中并按如下方式分配:
$scope.privateTodos = $firebaseArray(privateTodosRef);
Run Code Online (Sandbox Code Playgroud)
这里有关于复杂查询的更多信息的参考,并且如其他响应中所提到的,可以通过优先级和重构来完成一些很好的优化.
快乐的编码!
| 归档时间: |
|
| 查看次数: |
41715 次 |
| 最近记录: |