首页 > 解决方案 > 只允许付费用户写入特定字段?

问题描述

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

我知道如何创建规则以允许基于某个字段写入某个文档 - 但是如何使该规则仅在您写入某个字段时才有效?(没有写)

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

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

或者 - 是否有最佳实践方法来做到这一点?

标签: firebasegoogle-cloud-firestorefirebase-authenticationfirebase-security

解决方案


在您的安全规则中,您也可以从数据库访问文档。因此,如果文档包含paid字段,您可以像if resource.data.paid == true. 有关详细信息,请参阅数据验证

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

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

推荐阅读