首页 > 解决方案 > Firebase Firestore 仅允许用户在有过滤器的情况下查询集合

问题描述

我正在尝试创建一个 Firestore 规则,该规则只允许用户列出他们正在过滤字段的集合中的文档。

// would fail:
db.collection('documents').get();

// would succeed:
db.collection('documents').where('fieldId', '==', 123456).get();

有没有办法通过 Firestore 规则来实现这一点?

标签: javascriptfirebasesecuritygoogle-cloud-firestorefirebase-security

解决方案


我能想到的唯一方法是使用基于查询的规则

像这样的东西:

allow read: if resource.fieldId.published == 123456;

但我不认为有办法只要求他们过滤fieldId,无论价值是什么。

有趣的是,这可以通过实时数据库安全规则实现,它有一个单独query.orderByChild.

我认为这听起来像是一个合理的功能,所以我建议你提交一个功能请求。它现在或任何附近的功能都对您没有帮助,但是...谁知道呢。


推荐阅读