我使用的是 Firebase 实时数据库(不是 Firestore),并且 Firebase 规则存在问题。
我正在使用 bolt 来生成规则:
path /projects {
read() { false }
write() { false }
/{project_uuid} {
read() {
projectMatch(project_uuid, this.parent_uuid)
}
}
}
function projectMatch(project_uuid, parent_uuid) {
return (
(
(
parent_uuid != null &&
parent_uuid == auth[parent_uuid].projectUuid
) ||
( project_uuid == auth[project_uuid].projectUuid ) ||
( project_uuid == auth[project_uuid].projectParentUuid )
)
);
}
bolt 文件编译成功,但是当我将规则粘贴到 Firebase 中时,以下行会产生错误
Invalid property access on 'auth' object
:
data.child('parent_uuid').val() == auth[data.child('parent_uuid')].projectUuid
我应该如何调整我的代码才能使该规则发挥作用?
尝试以下方法
不要使用 auth[parent_uuid].projectUuid,而是尝试使用 auth[parent_uuid]['projectUuid']。这将确保我们正确访问 auth 对象的 projectUuid 属性。
path /projects {
read() { false }
write() { false }
/{project_uuid} {
read() {
projectMatch(project_uuid, this.parent_uuid)
}
}
}
function projectMatch(project_uuid, parent_uuid) {
return (
(
(
parent_uuid != null &&
parent_uuid == auth[parent_uuid]['projectUuid']
) ||
( project_uuid == auth[project_uuid]['projectUuid'] ) ||
( project_uuid == auth[project_uuid]['projectParentUuid'] )
)
);
}
尝试一下并告诉我