我几乎已经阅读了每个StackOverflow答案,但是对于我的情况,它们都不起作用,因为这是一个常见问题。在Firebase中查询数据时,我的Xcode控制台发出非常常见的警告。该警告为Using an unspecified index. Your data will be downloaded and filtered on the client. Consider adding ".indexOn": "username" at /users to your security rules for better performance
我试图首先阅读Firebase文档,以准确地了解我在做什么以及其他答案,例如Why does this Firebase ".indexOn" not work?。下面,我提供了与消息提示完全相同的安全规则;在/ users上添加indexOn但没有成功。我还在下面提供了我的数据库用户节点和一个功能。
{
"rules": {
".read": true,
".write": true,
"users":{
".indexOn": "username"
}
}
}
/ users中我的Firebase数据库为JSON格式
"users":{
"5LYUynelLTcL8Bg9WNWGXV34YIq2" {
"email": "user1@gmail.com"
"username": "user1"
}
"9srk307kzxOW7j6dNmMaac9eYPu2" {
"email": "user2@gmail.com"
"username": "user2"
}
我在Swift中使用的函数
let ref = Database.database().reference().child("users").queryOrdered(byChild: "username").queryEqual(toValue: passedInFriendString)
ref.observeSingleEvent(of: .value) { (snapshot) in
print(snapshot)
}
我不确定还要去哪里。任何关于这是否是查询我想要的正确格式的见解都会很棒!
答案 0 :(得分:0)
我解决了!
我没有意识到的是,我的问题中的上述代码在/ users上添加了适当的索引定义后,确实成功打印了快照。我的问题是,如果要进一步访问我正在查询的用户名快照的数据,则需要遍历快照。看起来像这样
findViewById
感谢上面的弗兰克(Frank)指导我并确认我处在正确的轨道上。每当我需要获取数据时,我很高兴能学到一些新的高效方法。