我使用Angular和Firebase制作了一个小聊天应用程序。我虽然遇到了一些独特的问题。该应用程序有公共频道,我希望频道的名称是唯一的。我正在使用密钥来强制独特性,但我想知道是否有更好的方法来做到这一点。这是我目前的验证规则。
{
"rules": {
".read": "auth != null",
".write": "auth != null",
"public-channels": {
"$name": {
".validate": "!root.child('public-channels').child($name).exists()"
}
}
}
}
以下是数据的示例
{
"public-channels" : {
"test1" : {
"displayName" : "Test1"
},
"test2" : {
"displayName" : "Test2"
}
}
}
您知道是否有解决此问题的方法,其中数据的结构可以像使用uid作为密钥的标准列表数据一样,并且仍然在数据库级别强制执行唯一性?
我想使用的数据格式如下:
{
"public-channels": {
"SomeUID": {
"name": "Channel Name" // This value should be unique
}
}
}
想要这种结构背后的原因是有些字符不能用在一个值的路径中("。","#", " $"," ["或者"]")我想在频道名称中允许这些字符。