检查firebase规则中动态ID的值

问题描述 投票:0回答:1

我是Firebase的新手,我正在为我的数据库编写规则。我有这样的事情:

"messages" : {
  "generatedId1" : {
    "status" : "waiting"
    "sender" : "uid"
  },
  "generatedId2" : {
    "status" : "send"
    "sender" : "uid2"
  }
 }

这只是一个示例,而不是实际的数据库。

我想要的是设置规则,以便客户端可以请求状态为“等待”的所有消息,但不能请求状态为“发送”的消息。问题在于,当我处于消息级别时,我不知道如何设置状态规则。

我有这样的事情:

"messages" : {
  ".read": "(auth != null && data.child($generated).child('status').val() === 'WAITING')"
}

这里的问题是我无法达到状态。 $生成显然不起作用,我没有找到任何访问所有孩子的东西。

旁注,我已经考虑过分离列表(一个列表用于等待中的消息和一个用于发送中的消息),但在我的情况下它确实不是最佳的,我需要另一个解决方案(如果它存在)

如果你拥有它,那将是受欢迎的!

谢谢你的帮助 !

firebase firebase-realtime-database rules
1个回答
1
投票

您正在寻找query-based rules。在您的情况下,规则看起来像这样:

"messages" : {
  ".read": "auth != null && 
           query.orderByChild == 'status' &&
           query.equalTo == 'waiting'" 
}

请记住,您必须使用相同的查询来读取数据。

© www.soinside.com 2019 - 2024. All rights reserved.