如何根据数据库用户 ID(不是 uid)设置 firebase 规则

How to set firebase rules based on database user id (not uid)

您好,我的 fb 数据库中有一个用户列表。用户 ID 是在成功注册后自动生成的,每个用户条目都有姓名、电子邮件和 uid。此外,这些属性中的每一个都在 /index 中建立了索引,这样我就可以根据用户的 uid 轻松查找用户的 id。

根据文档,firebase 说要使用 write: $user_id === auth.uid

如何使用生成的 ID 而不是 uid 来完成此操作?

这是脸书数据库:https://medviz.firebaseio.com/

在你的用户对象中会有这样的用户

users : {
 user1234abc:{         
       name: "abc"         
    },                    
    user2434dbcc:{         
       name: "abc"         
    } 
}   

您将在用户对象中有许多 unique key/user nodes,例如 user1234abcuser2434dbcc

该唯一键可以在规则中命名为任何 variable,不必将其命名为 $user_id,您可以随意命名,例如您可以将变量命名为 $any_variable 用于唯一用户密钥

并且在 auth.id 中,只要用户成功验证相同的唯一 ID 在 auth.uid 中,因此当您编辑与该用户相关的信息时,您可以在任何地方计算 auth.uid

例如,如果 auth.uid 包含 user1234abc 并且如果 user1234abc 正在编辑此对象 user1234abc:{name: "abc" } 那么根据 .write 规则他将能够

查看下面的更新视图

更新的视觉层次结构:

--schema--
users : {
           ________________
          |
    user1234abc:{          |
       name: "abc"         |  
    },                     |
    user2434dbcc:{         |
       name: "abc"         |
    }                      |
}                  key can be name as any variable  in rules
                           |
-- rules--
                           | 
{                          | 
  "rules": {               |
    "users": {             |
      ".read": true,       |
           ________________|___________  
          |                            |
         \|/                           | 
      "$any_variable": {              \|/     
        ".write": "$any_variable === auth.uid"
      }
    }
  }
}