如何使用auth.uid变量在firebase上设置indexOn规则?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用auth.uid变量在firebase上设置indexOn规则?相关的知识,希望对你有一定的参考价值。

我试图在firebaseDatabase中的节点上设置规则,但是我收到错误

保存规则时出错 - 第85行:键名不能包含“。”,“#”,“$”,“/”,“[”或“]”(未绑定的名称以“$”开头)

据我所知,auth.uid是当前登录用户的全局变量。我怎样才能解决这个问题?

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null", 

        "notifications/auth.uid": {
        ".indexOn":["createdAt"]    
      }
  }
}
答案

如果您尝试在auth.uid下为每个用户存储通知并允许通过定义索引来查询这些通知,那么您正在寻找以下规则:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null", 

    "notifications": {
      "$uid": {
        ".indexOn":["createdAt"]    
      }
    }
  }
}

这里的$uid是一个通配符,适用于notifications下的每个节点。要了解有关此内容的更多信息,请参阅Using $ Variables to Capture Path Segments

另一答案

这是问题所在

"notifications/auth.uid"

因为它将引号内的所有内容都视为字符串,因此句点导致错误,路径不能包含句点字符。此外,它不会解析auth.uid,因为它只是一个字符串,而不是你想要的变量。你可以做点什么

root.child('notifications').child(auth.uid) {...

甚至

root.child( 'notifications/' + auth.uid ) {...

以上是关于如何使用auth.uid变量在firebase上设置indexOn规则?的主要内容,如果未能解决你的问题,请参考以下文章

关于在Firebase auth Uid下检索嵌套数据并使用android studio推送uid

Firebase - auth.uid 是共享机密吗?

如何在firebase实时数据库中编写规则?

使用 auth.uid 限制对 Firebase-Database 的访问不起作用

IdToken()和Uid()在firebase中有什么区别

Firebase Firestore 安全规则 |如果字段值与 auth uid 相同,则允许读取