Firebase 获取基于角色的文档
Firebase fetches role-based documents
如果我在 firebase 中有一个包含多个文档的集合,并且每个文档都有一个名为“角色”的字段,是否可以在获取整个集合时仅向用户显示属于他的文档?
是的。你可以做到这一点。
假设用户具有角色 'student',您可以获取所有文档 .where('role', isEqualTo: 'student')
。
注意:角色也可以是用户 ID(您可以获取角色是用户 ID 的所有文档)。
您可以使用以下 firebase 规则来防止未经授权
访问。
match /document/{docs=**} {
allow write, read: if isAllowed();
}
function isAllowed() {
// request.resource.data is the data being fetched.
return request.resource.data.role == 'student';
}
function userRole() {
// returns the user role. Use this if the user role is stored in a document.
return get(/databases/$(database)/documents/users/$(userId)).data.role;
}
注意:您的查询必须包含 .where('role', isEqualTo: 'student')
,否则将因权限不足而失败。
如果我在 firebase 中有一个包含多个文档的集合,并且每个文档都有一个名为“角色”的字段,是否可以在获取整个集合时仅向用户显示属于他的文档?
是的。你可以做到这一点。
假设用户具有角色 'student',您可以获取所有文档 .where('role', isEqualTo: 'student')
。
注意:角色也可以是用户 ID(您可以获取角色是用户 ID 的所有文档)。
您可以使用以下 firebase 规则来防止未经授权 访问。
match /document/{docs=**} {
allow write, read: if isAllowed();
}
function isAllowed() {
// request.resource.data is the data being fetched.
return request.resource.data.role == 'student';
}
function userRole() {
// returns the user role. Use this if the user role is stored in a document.
return get(/databases/$(database)/documents/users/$(userId)).data.role;
}
注意:您的查询必须包含 .where('role', isEqualTo: 'student')
,否则将因权限不足而失败。