【发布时间】:2017-07-24 19:02:45
【问题描述】:
我有一个具有以下结构的数据库
"users":{
"user1234" {
"username": "user1234"
}
}
我正在尝试进行查询以查找用户名为“user1234”的用户。当我使用 queryEqual(toValue:) 时,我没有得到任何匹配,但是当使用 queryStarting(atValue:) 时,我确实得到了用户。我已经确认用户名实际上是“user1234”。我做错了什么?
let query1 = databaseRef.child("users").queryOrdered(byChild:"username").queryStarting(atValue: "user1234").queryLimited(toFirst: 1)
query1.observeSingleEvent(of: FIRDataEventType.value, with: { (snapshot) in
//snapshot contains the user with username "user1234"
})
但是以下不起作用
let query2 = databaseRef.child("users").queryOrdered(byChild:"username").queryEqual(toValue: "user1234")
query2.observeSingleEvent(of: FIRDataEventType.value, with: { (snapshot) in
//snapshot DOES NOT contain the user with username "user1234"
})
我的安全规则是
"rules": {
".read": "true",
".write": "true",
"users": {
"$uid": {
".indexOn": ["username"],
},
},
},
【问题讨论】:
-
您确定第二个查询中的 usernameLowered = "user1234" 吗?
-
是的,这只是输入问题时的拼写错误。谢谢指出
标签: ios swift firebase firebase-realtime-database