Firebase复合体"包含"查询

时间:2016-08-13 23:46:08

标签: android firebase-realtime-database

我正在将一个Android应用程序从rdbms移动到firebase,就像Firebase中的新手一样,我正在努力解决一些问题。

我在FB中有以下数据库:

{
  "posts" : {
    "-KNnbTHJGm83zpSELWwB" : {
      ".priority" : "6gydj46kg0",
      "branch" : "Branch",
      "category" : "Categoria",
      "expiration" : "24h",
      "g" : "6gydj46kg0",
      "l" : [ -23.5415083, -46.88642 ],
      "photo" : "mPostPic_20160728192627.jpeg",
      "price" : 10,
      "priority" : 0,
      "product" : "ipad",
      "userKey" : "BNd8RP5qHoc0q7f9gn8cLjPy5Ux1",
      "offerMessage": "Valido ate as 14:00 hs",
      "likeCount": 0
    }
  }
}

在这篇文章db中我有一个孩子"类别"。我有一些类别的列表,我只需要查询值类别在此类别列表中的帖子。

我试过.start()和.end()但是没有用。

2 个答案:

答案 0 :(得分:2)

如果您的条件列表是连续的,则可以使用startAt()endAt()获取这些条件。既然你说你已经尝试过,要么你做错了(看到你的代码在这种情况下允许帮助)或标准不连续。

后一种情况更有可能,意味着您的愿望是一个等同于SQL WHERE category IN ("Categoria", "Categorib", "Categoric")的查询。 Firebase没有这样的操作。相反,您必须使用equalTo进行多次查询才能完成结果。

或者,您可以尝试对数据进行不同的建模,以便一次性检索条件的帖子。这并非总是可行,但如果是,则遵循Query based on multiple where clauses in firebase

中概述的方法

答案 1 :(得分:0)

您正在搜索Firebase的功能equalTo。你可以这样做:

Query myQuery = myFirebaseReference.child("posts")
    .orderByChild("category")
    .equalTo("Categoria");

根据您的Firebase版本,myFirebaseReference可以是Firebase个对象,也可以是DatabaseReference