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'),否则将因权限不足而失败。