当前位置: 首页 > 面试题库 >

如何在Firebase中查询所有子级中具有特定值的属性

吴嘉禧
2023-03-14
问题内容

我有这个数据结构,在这里组织待办事项以遵循路径/ 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)是否可能,我应该怎么做?还是我应该进一步规范化并安排路径/私人路线,以免走下待办事项?


问题答案:

WHEREFirebase中没有子句。请查看此线程,以获取有关按多个字段进行搜索的一些出色的结构性技巧,有关数据库样式查询的该线程,有关查询的博客和docs。

您的第一种方法应该是分割数据,如何将其读回。类似于以下内容:

/todos/public
/todos/private
/todos/completed

您还可以按照文档中的说明使用优先级。然后根据优先级提取项目。

如果列表少于一千(如果对数据进行了适当的分区,则应该是一千),那么您可能只需抓取待办事项列表并在客户端对其进行过滤-
对于像这样的短集合,这是一个很好的选择,尤其是在使用像Angular一样强大的库。



 类似资料:
  • 问题内容: 我有几个使用SimpleXML访问的具有不同属性的相同元素: 我需要删除ID为“ A12” 的特定 seg 元素,该怎么做?我尝试遍历 seg 元素并未 设置 特定的元素,但这不起作用,元素仍然存在。 问题答案: 尽管SimpleXML提供了一种删除XML节点的方法,但其修改功能还是受到一定限制。另一种解决方案是使用DOM扩展。dom_import_simplexml()将帮助您将转换

  • 问题内容: 在Java中,给定一个值数组(例如整数),是否有一种方法可以有效地检查它们是否都具有特定值? 例如,使用整数数组,例如: 并且只有在所有条件均为2的情况下,您才需要执行一项操作?有没有比这更有效的方法: 我知道可以用C ++做到这一点,但是Java呢? 问题答案: 或者,如果使用Java 8,则可以执行以下操作: 基本上,使用Streams可以非常简洁地完成与集合/数组有关的所有操作。

  • 问题内容: 在Firebase的数据库中,我需要更新open的值并将其传递给 所有子级的false。我如何用Java语言做到这一点?像这样 问题答案: Firebase数据库没有与SQL等效的数据库UPDATE messages SET open=false。 要更新Firebase中的节点,您必须首先具有对该特定节点的引用。为了获得对节点的引用,您必须知道该 节点的完整路径。 这意味着您首先需要

  • 问题内容: 如何检查对象在JavaScript中是否具有特定属性? 考虑: 那是最好的方法吗? 问题答案: 我对所给出的答案感到困惑-他们中的大多数都是完全错误的。当然,您可以拥有具有未定义,空值或假值的对象属性。因此,简单地将属性检查减少到甚至更糟,将给您完全误导的结果。 这取决于您要查找的内容。如果您想知道一个对象是否物理上包含一个属性(并且它不是来自原型链的某个地方),那么您就可以这样做。所

  • 我有一个由10个名为Arr的唯一对象id组成的数组,我在一个名为xyz的集合中有10000个文档。 如何在只有一个请求的集合xyz中的数组Arr中使用对象ID查找文档? 有$all和$in运算符,但用于使用数组查询字段。 或者我是否需要发出等于Arr长度的请求并使用findOne获取单个文档? 编辑:我期待这样的事情: db.getCollection("xyz"). search({"_id":

  • 问题内容: 我有一些复杂的对象,例如猫,它具有许多属性,例如年龄,喜爱的猫食等等。 Java集中存储了一堆猫,我需要查找所有3岁的猫,或者最喜欢猫粮的Whiskas。当然,我可以编写一个自定义方法来查找那些具有特定属性的Cat,但是这样做会麻烦许多属性。有一些通用的方法吗? 问题答案: 您可以编写一个采用接口实例的方法,该实例定义了一个方法,该方法可以通过所需的任何属性检查来实现。 更好的是,使其