我是这里的新用户,希望我能按预期写出问题。
我有一个实时数据库,其中包含:
战斗是从hostId或参与者ID到他的战斗的对象。 每场战斗都包含:hostId,参与者ID,isApproved和主持人的电话号码。
添加战斗后,我将向主机和参与者添加战斗。 在每次战斗中,我都有一些规则:
阅读规则:
编写规则:
请注意,主持人不能邀请其他主持人。 以下是一些示例:
在主机表中找到“ h#”,在参与者表中找到“ p#”。
有效:
无效:
所以战斗看起来像:
Fights: {
hostId1: {
fightId1: {
hostId: hostId1,
participantId: participantId1,
isApproved: false,
phoneNumber: "123"
},
},
hostId2: {...},
participantId1: {
fightId1: {
hostId: hostId1,
participantId: participantId1,
isApproved: false,
phoneNumber: "123"
},
fightId2: {
hostId: participantId1,
participantId: participantId1,
isApproved: true,
phoneNumber: ""
},
},
admin2: {...}
}
我试图编写这些规则,但需要一些帮助,导致“数据库中较浅的.read和.write规则会覆盖较深的规则”。
我认为我需要使用一些规则:
用户已登录:
auth != null
主持人/参与者战斗的密钥应显示在hostId或参与者ID中:
($uid === newData.child('hostId').val() || $uid === newData.child('participantId').val())
写入数据的用户应显示在hostId或参与者ID中:
(auth.uid === newData.child('hostId').val() || auth.uid === newData.child('participantId').val())
参与者ID应该在参与者表中找到:
root.child('participants').child(newData.child('participantId').val()).exists()"
只有参与者可以更改isApprove
auth.admin === true || newData.child('isApprove').exists() === false
有人可以帮我写这些规则吗?
任何帮助表示赞赏!