我想以某种方式区分使用写入规则创建或更新列表。任何用户都可以创建新聊天,而只有该聊天中的用户才能更新它。所以基本上,我希望有一个更新规则,检查另一个非规范化列表,如果该用户在该聊天内部之前能够更新(类似,如果不等于读取规则工作正常)而不违反auth != null
规则用于创建新聊天。
"chats": {
"$chat": {
".write": "auth != null",
".read": "root.child('chats_by_user').child(auth.uid).child($chat).exists()"
}
}
有办法做到这一点吗?
答案 0 :(得分:2)
因此,只有让用户在聊天中进行更新的规则是:
"newData.val() != data.val() && root.child('chats_by_user').child(auth.uid).child($chat).exists()"
创建意味着该节点下目前没有data。
因此,仅允许创建操作的规则是:
"!data.exists()"
现在把它们放在一起:
"chats":{
"$chat":{
".write":"auth!=null && ((newData.val() != data.val() && root.child('chats_by_user').child(auth.uid).child($chat).exists()) || !data.exists() )",
".read":"root.child('chats_by_user').child(auth.uid).child($chat).exists()"
}
}