Firebase/Cloud Firestore/规则设置(读取、写入、更新、删除)



我在配置Cloud Firestore规则时遇到了一些问题。

我正在尝试访问文档、集合中的字段。。。像这个

Future<void> fetchAndSetProducts([bool filterByUser = false]) async {
final filterString = filterByUser
? Firestore.instance.collection('products').getDocuments()
: Firestore.instance
.collection('products')
.where('creatorId', isEqualTo: userId)
.getDocuments();
try {
QuerySnapshot prodSnap = await filterString;
if (prodSnap == null) {
return;
}

"creatorId"是数据库/产品/{productId}中的字段

我想区分用户,只允许他们更新和删除他们在数据库/products/…中创建的文件,但我也希望他们能够查看/products/…中的所有文档。。。

我为fetchAndSetProducts设置的bool是我希望用来过滤应用程序端的一些信息的,例如,只允许使用查看某些产品(包含其userId的产品(。我不确定我是否也需要在"产品"上设置索引,但我已经做了,以防万一。。

所以,我想锁定所有不是由用户创建的文件。

我以为会是这样的:

service cloud.firestore {
match /databases/{database}/documents {
match /products/{productId}/documents{
allow read: if resource.data.creatorId == request.auth.uid;
}
}
}

但是这不起作用,我的应用程序端代码也不起作用。。

如果您想匹配产品集合中的所有文档,它看起来像这样:

service cloud.firestore {
match /databases/{database}/documents {
match /products/{productId} {
allow read: if resource.data.creatorId == request.auth.uid;
}
}
}

请注意,我删除了第二场比赛结束时的"文档"。

最新更新