首页 > 解决方案 > Firebase Firestore 规则 get() 不工作

问题描述

我的大部分 Firestore 规则都有效。查找用户是否已签名并在许可下拥有文档。唯一的事情是,我想知道那个许可是什么。为此,我的功能

function UserClearance() {
    return Number(
        get(/databases/$(database)/documents/Clearance/$(request.auth.uid)).a || 
        get(/databases/$(database)/documents/Clearance/$(request.auth.uid)).data.a
    );
}

然后我将其与这样的数字进行比较

允许写:if UserClearance() > 1;

虽然我在这个功能上没有成功,但我想知道我是如何让它工作的。

清关文件

标签: firebasegoogle-cloud-firestorefirebase-security

解决方案


尝试这个。这个对我有用:

// helper functions
function clearance(database) {
   return get(/databases/$(database)/documents/Clearance/$(request.auth.uid)).data.a > 1
}

// security rules
service cloud.firestore {
  match /databases/{database}/documents {
    match /Clearance {
     allow read: if clearance(database);
    }
  }
}

确保database在正确的范围内使用变量。

资源:Firebase 指南:访问其他文档


推荐阅读