如何使用 firebase-bolt 定义包含?
How to define an contains using firebase-bolt?
我正在使用 firebase-bolt 来设置我的规则。
我的螺栓:
// ######## CONTENTS
path /contents {
read() = true;
index() = ["dt_created"];
}
path /contents/$id is Timestamped<Contents> {
write() = isSignedIn() && isAllowEdit(this);
}
type Contents {
text : String,
address : String,
organization: String | Null,
location: String | Null,
map_lat : String,
map_lng : String,
num_favorite: Number,
num_comment: Number,
num_denounce: Number,
removed: Boolean,
category_id : String,
user_id : String,
photos: String[]
}
//
// Helper Functions
//
isSignedIn() = auth != null;
isAllowEdit(value) = (prior(value) == null || newData.child('user_id').val() == auth.uid);
我希望只有所有者 post 可以编辑,但任何人都可以更新计数器。
我认为:
"contents": {
"$id": {
"num_favorite": {
".write": true
....
不确定是否可行。但是我可以创建规则来仅编辑包含 contains 的字段吗?
这在常规的 Firebase 安全规则中:
"contents": {
"$id": {
"num_favorite": {
".write": true
}
在 Bolt 上翻译为:
path /contents/$id/num_favorite {
write() = true;
}
这会起作用,因为您正在 添加 一个新权限,而不是尝试 删除 一个现有权限(not possible in Firebase's security rules language).
但我会考虑将投票分开到它自己的 higher-level 节点:
path /favorite_counts/$id {
write() = true;
}
这使您的安全规则更简单,并且彼此之间更加隔离。
我正在使用 firebase-bolt 来设置我的规则。
我的螺栓:
// ######## CONTENTS
path /contents {
read() = true;
index() = ["dt_created"];
}
path /contents/$id is Timestamped<Contents> {
write() = isSignedIn() && isAllowEdit(this);
}
type Contents {
text : String,
address : String,
organization: String | Null,
location: String | Null,
map_lat : String,
map_lng : String,
num_favorite: Number,
num_comment: Number,
num_denounce: Number,
removed: Boolean,
category_id : String,
user_id : String,
photos: String[]
}
//
// Helper Functions
//
isSignedIn() = auth != null;
isAllowEdit(value) = (prior(value) == null || newData.child('user_id').val() == auth.uid);
我希望只有所有者 post 可以编辑,但任何人都可以更新计数器。
我认为:
"contents": {
"$id": {
"num_favorite": {
".write": true
....
不确定是否可行。但是我可以创建规则来仅编辑包含 contains 的字段吗?
这在常规的 Firebase 安全规则中:
"contents": {
"$id": {
"num_favorite": {
".write": true
}
在 Bolt 上翻译为:
path /contents/$id/num_favorite {
write() = true;
}
这会起作用,因为您正在 添加 一个新权限,而不是尝试 删除 一个现有权限(not possible in Firebase's security rules language).
但我会考虑将投票分开到它自己的 higher-level 节点:
path /favorite_counts/$id {
write() = true;
}
这使您的安全规则更简单,并且彼此之间更加隔离。