gpt4 book ai didi

json - 如何在所有子项中查询具有特定值的属性的firebase

转载 作者:IT老高 更新时间:2023-10-28 12:48:07 26 4
gpt4 key购买 nike

我有这个数据结构,todos 按照路径/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"
}
}
}
}

我想查询 todos 以获取所有带有 private:true 的记录。这可能使用firebase(angularfire)吗?我应该怎么做?或者我应该更多地去规范化并安排路径/private 以避免走下 todos 吗?

最佳答案

假设你有 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();
});

这应该返回一个包含该用户所有私有(private)待办事项的对象,由他们的待办事项键组织(即 "-JUAfv4_-ZUlH7JqM4WZ"。如果您想使用 Angularfire,您可以将其包装在一个 $firebaseArray 并将其分配如下:

$scope.privateTodos = $firebaseArray(privateTodosRef);

这里是 a reference有关复杂查询的更多信息,正如其他回复中提到的,有一些很好的优化可以通过优先级和重组来完成。

编码愉快!

关于json - 如何在所有子项中查询具有特定值的属性的firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25272919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com