首页 > 解决方案 > Firebase 规则未按预期应用

问题描述

我最近对我的 Firebase Firestore 规则有奇怪的行为。我正在像这样保护一个集合:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    function getRoles() {
      return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role;
    }
    function isAdmin() {
      return 'admin' in getRoles();
    }
    match /registrationsRequests/{document} {
      allow create: if true;
      allow read, update, delete: if false;
    }
    match /users/{document} {
      allow read: if request.auth.uid == document || isAdmin();
      allow write: if request.auth.uid == document || isAdmin();
    }   
  }
}

登录后(并检查用户是否可以使用其 UID),我获取用户。但我收到以下错误(两项检查都应返回 true => isAdmin() 和文档)

FirebaseError: Missing or insufficient permissions.

@edit:使用的查询

const usrDoc = await this.db.collection('users').doc(user.uid).ref.get()

标签: firebasegoogle-cloud-firestore

解决方案


推荐阅读