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

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

本文关键字:uid 设置 firebase 规则 不是 何根 数据库 用户 id      更新时间:2023-09-26

嗨,我有一个用户列表在我的fb数据库。用户id在注册成功后自动生成,每个用户条目都有名称、电子邮件和uid。此外,这些属性中的每一个都在/index中被索引,因此我可以在给定用户的uid的情况下轻松查找用户的id。

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

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

这里是fb db: https://medviz.firebaseio.com/

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

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

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

唯一键可以命名为任何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"
      }
    }
  }
}