我编写了这些Firestore安全规则,以仅允许经过批准的用户使用数据:
service cloud.firestore {
match /databases/{database}/documents {
match /bikes/{document} {
function getRole(role) {
return get(/databases/$(database)/documents/employees/$(request.auth.uid)).data.isApproved
}
allow read: if getRole() == true;
allow write: if getRole() == true;
}
}
}
但是收到此错误
core.js:12501错误错误:缺少权限或权限不足。 在新的FirestoreError(index.cjs.js:346)处
怎么了?
其他代码:
1)角度代码
getUserData() {
this.afAuthState.authState.subscribe(user => {
console.log(user)
console.log("user uid")
console.log(user.uid)
if (user) {
this.dao.getEmployeeByUID(user.uid).subscribe( res => {
if (res) {
console.log(res)
this.employee = res
this.role = this.employee.role
}
else console.log("please ask the admin for confirmation")
})
}
else console.log("please login")
})
}
应用规则时,无法获取此(getEmployeeByUID)数据。没有规则时-很好
答案 0 :(得分:0)
您的规则是在名为docs
的集合下寻找匹配项,但您没有此类集合。看来您的规则应该放在名为employees
的集合上。