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

我有这个数据结构,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有关复杂查询的更多信息,正如其他回复中提到的,有一些很好的优化可以通过优先级和重组来完成。

编码愉快!

https://stackoverflow.com/questions/25272919/

相关文章:

javascript - js 中奇怪的 JSON 解析行为, "Unexpected token

jquery - AJAX 将 JavaScript 字符串数组发布到 JsonResult 作为

json - Jackson JSON Marshall 忽略 getter

c# - 配置 JSON.NET 以忽略 DataContract/DataMember 属性

iOS - 在 swift 中使用 ObjectMapper 映射根 JSON 数组

javascript - Flask:单击按钮下载 csv 文件

python - Django: "TypeError: [] is not JSON serial

php - 使用 json_encode() 时删除数组索引引用

javascript - 如何转换为 D3 的 JSON 格式?

asp.net-mvc - 如何从 MVC Controller 返回 Json 对象以查看