Firebase查询和规则

Firebase查询和规则,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,这似乎是一个相当简单的问题,我想我只是盯着它太久了。我试图在我的数据库上查询事务历史记录,但我只希望用户能够读取他们所涉及的事务文档。我知道查询约束必须与规则约束相匹配,而我的约束似乎与规则约束相匹配。有人能找到这里出了什么问题吗 火基规则 match /transaction-history/{transactionId}{ allow read: if isPurchaserOrReciever(getTransaction(transactionId));

这似乎是一个相当简单的问题,我想我只是盯着它太久了。我试图在我的数据库上查询事务历史记录,但我只希望用户能够读取他们所涉及的事务文档。我知道查询约束必须与规则约束相匹配,而我的约束似乎与规则约束相匹配。有人能找到这里出了什么问题吗

火基规则

    match /transaction-history/{transactionId}{
        allow read: if isPurchaserOrReciever(getTransaction(transactionId));
    }
    function isPurchaserOrReciever(transaction) {
        return transaction.purchaserId == request.auth.uid || transaction.recieverId == request.auth.uid;
    }
    function getTransaction(transactionId) {
        return get(/databases/$(database)/documents/transaction-history/$(transactionId)).data;
    }
我的应用程序中的数据库查询

await firestore
        .collection('transaction-history')
        .where('purchaserId', isEqualTo: myId)
        .getDocuments()).documents;

我仍然不确定我之前的查询为什么不起作用。在做更多研究的同时,我发现了一种简化查询的方法,而这不会引发任何错误。如果有人能告诉我以前的规则或查询出了什么问题,我仍然很感兴趣

    match /purchase-logs/{purchaseId}{
        allow read: if resource.data.userId == request.auth.uid;
    }

    match /transaction-history/{transactionId}{
        allow read: if resource.data.purchaserId == request.auth.uid || resource.data.recieverId == request.auth.uid;
    }

现在怎么了?是每个人都被阻止了还是没有人被阻止了?每个人都被阻止了,但是如果我运行模拟器,一切都像我期望的那样工作