根据Firebase文档-https://firebase.google.com/docs/database/security/securing-data#structuring_your_rules。
我无法使用.validate规则来防止删除。
编写规则级联。
具有以下安全规则:
{
"Tickets": {
".read": true,
"$CompetitionKey": {
"tickets": {
".write": "true"
}
}
}
}
let CompetitionKey = database.child("Tickets").push().key
let tickets = {
ticketsArray
}
const newData = {
[`Tickets/${CompetitionKey}`]: tickets
}
database.update(newData) //PERMISSION DENIED
let CompetitionKey = database.child("Tickets").push().key
const newData = {
[`Tickets/${CompetitionKey}/tickets`]: ticketsArray
}
database.update(newData) //WORKS
写入仅检查指定路径上的规则。
我只能在规则声明中走得那么远,因为我的ticketsArray是一个数组,所以我不能用".write": "true"
指定1000个孩子。
我可以接受这种规则的快速解决方案:
{
"Tickets": {
".read": true,
"$CompetitionKey": {
".write": "newData.child("tickets").child("$ticketsArray").exists()",
"tickets": {
}
}
}
}
我该如何表达?我找不到通往.child($variables)
的方法。
否则,我将需要像这样的规则,但是再次如第一个代码片段所示,深层规则将被忽略。
{
"Tickets": {
".read": true,
"$CompetitionKey": {
"tickets": {
"$ticketsArray": {
".write":"newData.exists()"
}
}
}
}
}