我有一个文档,所有用户都可以写入,但我想将特定字段或此文档中特定数据的记录仅限于付费用户。
我知道如何创建规则以允许基于特定字段写入特定文档-但是如何使此规则仅在写入特定字段时才有效? (不写)
allow write,update: if request.resource.data.brand.userID == request.auth.uid;
仅当书面文档包含字段logo
时,我如何才能允许将某个字段{"logo":"me.png"}
("paid":true
)写入文档。 (但请允许其他字段自由写入)
或者-是否有最佳实践方式?
答案 0 :(得分:1)
在安全规则内,您还可以从数据库访问文档。因此,如果文档包含paid
字段,则可以像if resource.data.paid == true
一样对其进行检查。有关更多详细信息,请参见Data validation。
由于请求中的文档也可供您使用,因此完整条件应类似于:
if resource.data.paid == true || !(logo in request.resource.data)