在我的项目中,我有一个聊天功能,允许用户通过私信发言。目前它只是一对一的,但稍后可以改进,以便进行小组讨论。
目前我正在努力使用自定义规则。实际上,对于我的项目,我需要用户拥有他们自己的讨论列表。例如,用户A和B通过私人消息进行通话,但用户C,D或其他任何内容都无法阅读讨论。
以下是数据库json的外观:
{
"room-messages": {
"-KWgoXt567vzgxZ-1gii": {
"-KWgoXt567vzgxZ-1gii": {
"name": "Friendly Chat",
"sent": 1479294463723,
"text": "Nice ! You have created a new chat",
"uid": "user_A_id"
},
"-KWh5_W12qsXFaJhyOvx": {
"name": "Lucien Guimaraes",
"sent": 1479294463728,
"text": "A text message",
"uid": "user_B_id"
}
},
"-KWgoXt567vzgxZ-1git": {
"-KWgoXt567vzgxZ-1git": {
"name": "Friendly Chat",
"sent": 1479294463723,
"text": "Nice ! You have created a new chat (2)",
"uid": "user_A_id"
},
"-KWh5_W12qsXFaJhyOvz": {
"name": "Lucien Guimaraes",
"sent": 1479294463729,
"text": "Test",
"uid": "user_C_id"
}
}
},
"room-metadata": {
"-KWgoXt567vzgxZ-1gii": {
"users": {
"user_A_id": "Lucien Guimaraes",
"user_B_id": "Geralt of Rivia"
}
},
"-KWgoXt567vzgxZ-1git": {
"users": {
"user_A_id": "Lucien Guimaraes",
"user_C_id": " Gordon Freeman"
}
}
}
}
对于您的信息,“user_A_id”或“user_B_id”应为Firebase身份验证提供的ID。在这个例子中,我希望用户A获得所有房间(因为他在两个可用的房间)。用户B应该只有第一个房间而用户B只有最后一个房间。
以下是我的规则:
我能够几乎完美地允许Rooms的写访问权限(唯一剩下的问题是无法删除邮件的用户,我不知道为什么)。但是对于Read,我有一个很大的问题:我无法设置自定义规则,因为“room-message”中的值“$ roomId”是未知的。只能作为“$ roomId”的孩子这样做。
我想要实施什么解决方案?
谢谢!
#AskFirebase