Firebase 规则——多个默认值
Firebase Rules -- Multiple Default Values
我的 firebase 中有一个 parent 作为 'Client'。然后是'invoices'的child,然后是发票上的children
'clients' {
'uid' {
'invoices' {
'number': '1003 //etc...
'payments' {
}
'history' {
}
'discussion' {
}
}
}
}
我试图只允许客户写入付款、历史记录和讨论。但是当我执行以下操作时,我在 Firebase 仪表板规则部分中收到错误 Cannot have multiple default rules ('$payments' and '$history').
。
"clients": {
".write" : "root.child('roles').child(auth.uid).child('level').val() == 4",
".indexOn" : "number",
"$estimates": {
"$discussion": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2"
}
},
"$invoices": {
"$payments": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2"
},
"$history": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2"
},
"$discussion": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2"
}
}
},
那么这些规则的正确写法是什么?
您的 JSON 规则树似乎遗漏了一些级别。
"clients": {
"$clientid": {
".write" : "root.child('roles').child(auth.uid).child('level').val() == 4",
"invoices": {
".indexOn" : "number",
"$invoiceid": {
"payments": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2"
},
"history": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2"
},
"discussion": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2"
}
}
},
对于需要应用于节点下所有非其他匹配子项的规则,您应该只使用 $ 变量。
因此,如果您将所有付款保留为 payments
节点的子节点并希望为它们指定特定的验证规则,您可以:
"payments": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2",
"$paymentid": {
".validate": "..."
}
},
我的 firebase 中有一个 parent 作为 'Client'。然后是'invoices'的child,然后是发票上的children
'clients' {
'uid' {
'invoices' {
'number': '1003 //etc...
'payments' {
}
'history' {
}
'discussion' {
}
}
}
}
我试图只允许客户写入付款、历史记录和讨论。但是当我执行以下操作时,我在 Firebase 仪表板规则部分中收到错误 Cannot have multiple default rules ('$payments' and '$history').
。
"clients": {
".write" : "root.child('roles').child(auth.uid).child('level').val() == 4",
".indexOn" : "number",
"$estimates": {
"$discussion": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2"
}
},
"$invoices": {
"$payments": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2"
},
"$history": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2"
},
"$discussion": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2"
}
}
},
那么这些规则的正确写法是什么?
您的 JSON 规则树似乎遗漏了一些级别。
"clients": {
"$clientid": {
".write" : "root.child('roles').child(auth.uid).child('level').val() == 4",
"invoices": {
".indexOn" : "number",
"$invoiceid": {
"payments": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2"
},
"history": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2"
},
"discussion": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2"
}
}
},
对于需要应用于节点下所有非其他匹配子项的规则,您应该只使用 $ 变量。
因此,如果您将所有付款保留为 payments
节点的子节点并希望为它们指定特定的验证规则,您可以:
"payments": {
".write": "root.child('roles').child(auth.uid).child('level').val() == 2",
"$paymentid": {
".validate": "..."
}
},