防止 Firestore 规则中的重复条目不起作用

2024-03-03

我尝试使用 Google Firestore 规则防止重复条目,但它不起作用。我正在尝试的规则是:

service cloud.firestore {  
  // Prevent duplicate messages
  match /databases/{database}/documents {
    match /messages/{message} {
        allow read;
      allow write: if request.resource.data.m != resource.data.m;
    }
  }
}

从我读到的来看,这应该有效。

我究竟做错了什么?


你的规则if request.resource.data.m != resource.data.m说那个领域m仅当与字段的当前值不同时才能写入m 在同一份文件中.

无法在安全规则中检查整个集合中的重复项,因为这需要 Cloud Firestore 读取集合中的所有文档(这在规模上会变得非常昂贵)。

当前实现唯一性约束的唯一方法是创建一个单独的集合,您可以在其中使用m作为文档 ID。由于集合中的文档 ID 根据定义是唯一的,因此您可以通过以下方式强制执行规则:

match /unique_ms/{m} {
  allow create;
}

上面只允许创建文档,不允许更新它。这意味着一旦有人创建了一个具有特定值的文档m,没有人可以覆盖它。

另一种方法是使用write规则可以是:

allow write: if !exists(/databases/$(database)/documents/unique_ms/{m});

另请参阅:

  • Cloud Firestore:强制执行唯一的用户名 https://stackoverflow.com/questions/47405774/cloud-firestore-enforcing-unique-user-names
  • firebase 中 firestore 中唯一属性的规则 https://stackoverflow.com/questions/51363730/firebase-rule-for-unique-property-in-firestore
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止 Firestore 规则中的重复条目不起作用 的相关文章

随机推荐

  • 使用 Laravel 的 Azure Active Directory SSO

    我正在使用 azure Active Directory 进行 sso 我已经在 azure 上完成了设置并开始操作 我正在使用计量学 laravel azure ad oauth https packagist org packages
  • R 中“data.frame 的标准公式接口”是什么意思?

    的文档aggregate states aggregate formula 是 aggregate data frame 的标准公式接口 我是R新手 不明白这是什么意思 请解释 Thanks Uri 跳转到示例部分的中间help aggre
  • php 自动化 setter 和 getter

    我正在尝试为 php 对象实现一些自动 getter 和 setter 我的目标是自动为每个属性提供方法getProperty and setProperty value 这样 如果没有为属性实现该方法 脚本将简单地设置或获取该值 举个例子
  • 如何在 PHP 中循环遍历已从 JSON 解码的对象数组,并回显值

    我是 PHP 新手 不知道如何继续 我从解码 JSOn 中返回的数组是 抱歉 如果其格式很奇怪 array 3 0 gt array 4 Name gt string 22 Brent s Medical Center date gt st
  • 基类和派生类中的同名对象不会被标记为错误

    class Base public type1 m Pants class Derived Base public type2 m Pants 这本质上并没有被标记为错误 而是在整个项目中造成了各种破坏和问题 有谁知道不会标记这一点的技术细
  • Struts 2.3 - 重定向与redirectAction

    之间的主要区别是什么redirect and redirectAction在Struts2 3上下文中 我看过以下网址redirect http struts apache org release 2 0 x docs redirect r
  • JavaScript 函数上下文不正确

    我注意到 javascript 中有一个奇怪的事情 考虑以下几点 var fn toUpperCase call console log typeof fn function fn Uncaught TypeError fn is not
  • 在相机预览上叠加静态可绘制图像

    我需要在手机处于相机预览模式时显示静态 png 图像 目前我正在引用此链接 a link 将图像叠加到相机预览 SurfaceView 上 https stackoverflow com questions 3548666 overlay
  • Angular $compile 与所需的控制器

    我有一个复合列表指令 即 一个列表项 它本身可以是一个列表 父指令定义控制器 directive parent function controller function scope link function scope element a
  • 如何像 pdf 文件一样下载 jpg 图像?

    我请求以与 pdf 文件相同的方式下载 jpg 图像 目前 如果我将 jpg 图像作为链接添加到网页 它将在另一个浏览器窗口中打开 而不是实际下载到用户计算机 但是 pdf 文件可以 这是标准代码 a href images my imag
  • 为什么 QGridLayout 小部件在添加新小部件时会移动?

    我似乎无法理解它们是如何工作的 放置多个小部件的最佳方式似乎是 QGridLayout 但是当我将某些内容添加到特定的行 列中 然后决定将某些内容添加到另一行 列中时 一切都会发生变化 这真的很令人沮丧 例如 我什至无法做像谷歌主页这样简单
  • 生成遵循分布的平滑随机数

    我有两个变量 我们称它们为x and y 绘制时是图中分散的蓝点 我已经使用 Scipy 中的 curve fit 拟合了它们 我想生成 假设 500000 平滑 复制分布的随机数 然后x and y By 平滑 我的意思是 我不想要完全复
  • 根据输入调整函数中的sql语句

    这事有点紧急啊 我正在尝试进行一个简单的过滤器搜索 您可以从一系列 3 个下拉列表中进行选择 然后基于此显示结果 我将如何调整每个下拉列表的 sql 查询 如果您要只选择从 3 个中的一个搜索 而不是从全部 3 个中搜索 等等 例如 可能存
  • 如何使用jQuery动态添加表单元素

    这是我的html div div class controls controls row div div
  • Chrome 控制台显示“导航到 http://localhost...”

    Chrome 控制台显示 导航到http localhost http localhost 用蓝色字母 Image 这是 Chrome 上的一项功能 当您选中 保留日志 选项时 可以分隔页面日志 如果您取消选中该框并重新加载页面 它不应显示
  • SCA 相对于 Spring 的优势?

    我有使用 Spring 开发 java web 应用程序的经验 但在 SOA 领域却没有那么多经验 我正在阅读有关 SCA SCA4J http www service conduit org user guide pdf http www
  • 如何使用比较器对ArrayList进行排序? [复制]

    这个问题在这里已经有答案了 我有一个实现静态方法的班级学生 public static Comparator
  • 如何在 PythonAnywhere 上部署 web2py?

    我如何启动并运行一个基本的 web2py 服务器Python无处不在 http www pythonanywhere com 更新 29 05 我们现在在网络选项卡上有一个大按钮 可以为您完成所有这些操作 只需点击它说的地方Web2Py 填
  • 在C#中,子类继承基类的“using”指令吗?

    假设我们有一个基类Rectangle和一个派生类Square namespace Shapes using System Foo public class Rectangle public Rectangle int l int w nam
  • 防止 Firestore 规则中的重复条目不起作用

    我尝试使用 Google Firestore 规则防止重复条目 但它不起作用 我正在尝试的规则是 service cloud firestore Prevent duplicate messages match databases data