在 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 执行集合组查询

Firestore / Cloud功能 - 如何在更改时更新Firestore数据

使用 Cloud Firestore 的用户特定收藏夹