如何使用复杂查询从Firebase检索数据?

时间:2016-11-04 19:25:49

标签: ios firebase swift2 firebase-realtime-database

我正在尝试为酒店预订创建ios应用程序。我的所有数据都存储在firebase中。我酒店的名称和位置存储在“HotelLocation”表中。

{
"HotelLocation": {
    "H1": {
        "name": "Ghetu hotel",
        "location": "shonargao,dhaka"
    },
    "H2": {
        "name": "BB hotel",
        "location": "gulshan,dhaka"
    },
    "H3": {
        "name": "Shuvashish hotel",
        "location": "uttara,dhaka"
    },
    "H4": {
        "name": "Bodi hotel",
        "location": "uttara,dhaka"
    }
  }  
 }

这是我的json格式的表'HotelLocation'但是我无法从这个表中只检索'uttara'的数据,即如果我搜索uttara那么我应该

  1. Shuvashish酒店

  2. Bodi hotel

  3. 我尝试使用'queryEqualToValue',但问题是'uttara,dhaka',因为firebase区分大小写。所以',dhaka'正在制造问题。

    在Firebase中有没有办法使用SQL命令“%LIKE%”?

1 个答案:

答案 0 :(得分:1)

如果您使用queryStartingAt(" uttara")和queryEndingAt(" uttara"),它将返回您想要的节点。

您无法对通配符字符进行精确搜索。

还有很多其他方法可以解决这个问题......

为引用这样的酒店的位置创建一个节点,然后您可以读取该节点并获得酒店列表:

uttara
   H3: true
   H4: true

或者另一种选择是创建对地点的引用 - 假设Shuvashish酒店在uttara和shonargao都有位置。深入查询Hotels节点的位置/ L1 = true将返回H3

locations
   L1: "uttara"
   L2: "gulshan"
   L3: "shonargao"


Hotels
     H2
       "name:": "BB hotel"
       "locations"
          L2: true
    H3
       "name": "Shuvashish hotel",
       "locations"
          L1: true
          L3: true