在Firebase数据库中查询关键字
支持我有一个如下所示的数据库:在Firebase数据库中查询关键字,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,支持我有一个如下所示的数据库: { "eventAttendees" : { "fm" : { "9" : "Alice", "23" : "Khanh", "43" : "Bach" } }, "events" : { "fm" : { "date" : "2017-06-16", "name" : "I love Firebase Meetup in Tokyo yesterday".
{
"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"
}
}
}
如果我查询关键字“Firebase 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”,它就不起作用了
是否可以查询“Firebase”并获得如下结果
["fm": {
date = "2017-06-16";
"name" : "I love Firebase Meetup in Tokyo yesterday". ;
}]
可以使用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)
这里的文档
此外,如果您想从Firebase开始或以Meetup结束,只需执行以下操作:
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)
此处的文档您可以使用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)
这里的文档
此外,如果您想从Firebase开始或以Meetup结束,只需执行以下操作:
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)
此处的文档查看
querystartingavalue
和queryindingavalue
:查看querystartingavalue
和queryindingavalue
:startAt将起作用,因为“Firebase”位于字符串的开头。如果我问“Meetup”怎么办?约翰,在你的问题中,这就是你问的,或者我错了?你想达到什么目的?@John我更新了答案,让我知道这是否是你所期望的:)嗨。很抱歉把问题弄糊涂了。我的意思是如果“名字”:“我喜欢昨天在东京举行的Firebase聚会”。queryStart(位于:“Firebase”).queryLimited(toFirst:1)能否返回相同的结果?不,不,在这种情况下,您需要添加“I love Firebase”@John,仅此而已:)startAt将起作用,因为“Firebase”位于字符串的开头。如果我问“Meetup”怎么办?约翰,在你的问题中,这就是你问的,或者我错了?你想达到什么目的?@John我更新了答案,让我知道这是否是你所期望的:)嗨。很抱歉把问题弄糊涂了。我的意思是如果“名字”:“我喜欢昨天在东京举行的Firebase聚会”。queryStart(位于:“Firebase”).queryLimited(toFirst:1)能否返回相同的结果?不,不,在这种情况下,您需要添加“我爱Firebase”@John,仅此而已:)