【发布时间】:2018-04-16 11:04:58
【问题描述】:
这是我的数据库:
{
"lists": {
"list1_id_1": {
"field1": "some value",
"field2": "some value"
}
}
}
我想允许任何用户创建新列表,但不修改现有列表,所以我尝试了以下规则:
{
"rules": {
"lists": {
".read": "true",
".write": "!data.exists()"
}
}
}
当我尝试将以下数据写入/lists/时,这不起作用:
{ "field1": "qq", "field2": "ww" }
显然,“.write”规则导致写入失败,因为 /lists/ 已经存在。
所以我尝试了以下规则:
{
"rules": {
"lists": {
".read": "true",
"$list_id": {
".write": "!data.exists()"
}
}
}
}
这也不起作用,Firebase 模拟器没有选择导致写入操作失败的规则,所以我猜是因为“列表”中缺少“.write”。
你能帮帮我吗? 我认为我的问题在于规则以及我尝试将新项目推送到模拟器中的 /lists/ 的方式。
附:我知道当我尝试推送新数据时,Firebase 会生成 list_id,但我不确定如何将这些知识用于模拟器。
谢谢! 斯拉维克
【问题讨论】:
标签: firebase firebase-realtime-database firebase-security firebase-console