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;
}
现在怎么了?是每个人都被阻止了还是没有人被阻止了?每个人都被阻止了,但是如果我运行模拟器,一切都像我期望的那样工作