在 Cloud Firestore 中如何制作一个,只创建一次安全规则
Posted
技术标签:
【中文标题】在 Cloud Firestore 中如何制作一个,只创建一次安全规则【英文标题】:In Cloud Firestore how to make an, create only once security rule 【发布时间】:2018-04-22 10:43:02 【问题描述】:我只是盯着迁移到 Cloud Firestore 并想知道这个安全规则。 在 Firebase 实时数据库中,这条规则:
如果规则表达式中的一个操作数为真,则计算为真。
在这个例子中,只要旧数据或新数据没有,我们就可以写 存在。换句话说,如果我们正在删除或创建,我们可以写 数据,但不更新数据。
".write": "!data.exists() || !newData.exists()"
我正在尝试在 Cloud Firestore 中复制
match /USER_ID/Id allow create: if resource.data.id != exist allow read: if request.auth.uid != null;
我想要的是,如果Document
存在于USER_ID
Collection
中,那么发生在其中的事务必须失败。
但这不起作用。我已经阅读了doc 几次,但无法让它工作
【问题讨论】:
【参考方案1】:您需要使用 exists 函数,如果它存在,您需要将要测试的文档的路径传递给它。下面是一个如何检查文档是否不存在的示例。
service cloud.firestore
match /databases/database/documents/
match /USER_ID/Id
allow create: if !exists(/databases/$(database)/documents/USER_ID/$(Id))
allow read: if request.auth.uid != null;
【讨论】:
谢谢,我尝试了类似的方法,但现在可以了以上是关于在 Cloud Firestore 中如何制作一个,只创建一次安全规则的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Instagram 克隆构建 Cloud Firestore 数据?
如何让我的 Google-service.json 与 Google Cloud Platform 中的 Firestore 一起使用?
向 Firebase Cloud Firestore 和 Angular 添加数据
如何在 Cloud Firestore 中使用文档 ID 执行集合组查询