【问题标题】:Can I check that a path contains a value FIrebase RealtimeDatabase Rules我可以检查路径是否包含值 FIrebase 实时数据库规则
【发布时间】:2020-07-01 16:10:16
【问题描述】:

我有这样的规则

"PermanentChatInfo":{
    ".read": "auth.uid != null",
        
        "$ChatUid":{
          
         ".write": "auth.uid != null && $ChatUid.contains('auth.uid') || !newData.exists()"
          
        }
        
  },

而“$ChatUid”是与“!”连接的创建者 uid和一个随机生成的数字。

如果 $ChatUid 包含用户 Uid,我希望允许用户能够写入该路径。但是,当我在我的应用程序中创建聊天时,它不会写入实时数据库中的该路径。有什么我做错了吗?

【问题讨论】:

  • 在 Stack Overflow 上,请勿分享代码图片。将代码复制到问题本身中,并对其进行格式化,以便于阅读、复制和搜索。
  • 将编辑我的答案

标签: firebase-realtime-database firebase-security


【解决方案1】:

$ChatUid 是一个字符串,所以你应该可以call contains 就可以了。

问题出在:

$ChatUid.contains('auth.uid')

这会检查您的$ChatUid 捕获/变量是否包含文字字符串auth.uid

您要查找的是auth.uid,不带引号:

$ChatUid.contains(auth.uid)

【讨论】:

  • 感谢您的帮助。最后一个问题。 Firebase 规则需要多长时间才能生效?只是因为我试过了,它没有写入数据库。
  • 我确实为您的答案投票并勾选,因为它确实回答了我的问题。
  • 规则几乎在几秒钟内就适用于我。但是如果你遇到问题,最好使用规则游乐场来测试它是否真的按照你想象的方式工作(我自己没有尝试过,只是发现了你在逻辑实现中的错误)。跨度>
猜你喜欢
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
相关资源
最近更新 更多