2017-06-15 93 views
1

支持我有一个数据库,如下图所示:查询在火力地堡数据库关键字

{ 
    "eventAttendees" : { 
    "fm" : { 
     "9" : "Alice", 
     "23" : "Khanh", 
     "43" : "Bach" 
    } 
    }, 
    "events" : { 
    "fm" : { 
     "date" : "2017-06-16", 
     "name" : "I love Firebase Meetup in Tokyo yesterday". 
    }, 
    "gm" : { 
     "date" : "2017-08-12", 
     "name" : "Meet Linh" 
    } 
    }, 
    "users" : { 
    "1" : { 
     "name" : "David" 
    }, 
    "2" : { 
     "name" : "Alice" 
    }, 
    "10" : { 
     "name" : "Khanh" 
    } 
    } 
} 

如果我查询关键字“火力地堡Meetup网站”,它的工作原理。

let query = ref.child("events").queryOrdered(byChild: "name").queryEqual(toValue: "Firebase Meetup").queryLimited(toFirst: 1) 
     query.observe(.value, with: { (snapshot) in 
      let content = snapshot.value as? [String : AnyObject] ?? [:] 
      print(content) 

- >返回

["fm": { 
    date = "2017-06-16"; 
    "name" : "I love Firebase Meetup in Tokyo yesterday". ; 
}] 

,但如果我查询关键字 “火力地堡”,这是行不通的。

如果可以查询“Firebase”并获得如下结果?

["fm": { 
      date = "2017-06-16"; 
      "name" : "I love Firebase Meetup in Tokyo yesterday". ; 
     }] 
+0

查看'queryStartingAtValue'和'queryEndingAtValue':https://firebase.google.com/docs/database/ios/lists-of-data#filtering_data –

回答

0

可以使用startAt()函数:

let query = ref.child("events").queryOrdered(byChild: "name").queryStart(at: "I love Firebase").queryLimited(toFirst: 1) 
     query.observe(.value, with: { (snapshot) in 
      let content = snapshot.value as? [String : AnyObject] ?? [:] 
      print(content) 

文档这里https://firebase.google.com/docs/reference/js/firebase.database.Query#startAt

另外,如果你想开始与火力地堡或聚会结束,只是做:

let query = ref.child("events").queryOrdered(byChild: "name").queryStart(at: "Firebase").queryEnd(at: "in Tokyo yesterday").queryLimited(toFirst: 1) 
     query.observe(.value, with: { (snapshot) in 
      let content = snapshot.value as? [String : AnyObject] ?? [:] 
      print(content) 

此处的文档https://firebase.google.com/docs/reference/js/firebase.database.Query#startAt

+0

startAt将工作,因为“Firebase”位于字符串的开头。如果我查询“Meetup”会怎么样? – John

+0

@约翰,在你的问题中,这是你问的,或者我错了?你想达到什么目的? –

+0

@John我更新了答案,让我知道如果这是你期望:) –