我正试图在他的电子邮件中抓住这个uid。
我有这个:
let usersRef = Database.database().reference().child("users")
usersRef.queryOrdered(byChild: "email").queryStarting(atValue: email).queryEnding(atValue: email).observeSingleEvent(of: .value, with: { (snapshot) in
if let values = snapshot.value as? [String: Any]{
print(values)
}
})
我的数据库如下所示:
用户
| - $ UID
| --email:"一些电子邮件"
快照不会返回任何内容。
此外,调试器告诉我:
使用未指定的索引。您的数据将在客户端上下载和过滤。考虑添加" .indexOn":"电子邮件" at / users to your security rules以获得更好的性能
我想我是这样做的:
{
"rules": {
"users": {
".read": "auth != null",
"$uid": {
".write": "$uid === auth.uid",
".indexOn": ["email"]
}
但这也不起作用。
答案 0 :(得分:1)
您必须在执行查询的位置定义Firebase数据库索引。所以这比你现在拥有的水平高一级:
{
"rules": {
"users": {
".indexOn": ["email"],
".read": "auth != null",
"$uid": {
".write": "$uid === auth.uid",
}
}
}
}
答案 1 :(得分:0)
如下更改:
{
"rules": {
"users": {
".read": "auth != null",
"$uid": {
".write": "$uid === auth.uid",
".indexOn": "email"
}
}
}