只允许向付费用户写入特定字段?

时间:2020-06-14 10:19:29

标签: firebase google-cloud-firestore firebase-authentication firebase-security

我有一个文档,所有用户都可以写入,但我想将特定字段或此文档中特定数据的记录仅限于付费用户。

我知道如何创建规则以允许基于特定字段写入特定文档-但是如何使此规则仅在写入特定字段时才有效? (不写)

 allow write,update: if request.resource.data.brand.userID ==  request.auth.uid;

仅当书面文档包含字段logo时,我如何才能允许将某个字段{"logo":"me.png"}"paid":true)写入文档。 (但请允许其他字段自由写入)

或者-是否有最佳实践方式?

1 个答案:

答案 0 :(得分:1)

在安全规则内,您还可以从数据库访问文档。因此,如果文档包含paid字段,则可以像if resource.data.paid == true一样对其进行检查。有关更多详细信息,请参见Data validation

由于请求中的文档也可供您使用,因此完整条件应类似于:

if resource.data.paid == true || !(logo in request.resource.data)