为什么验证规则的行为(仅)与 onDisconnect 更新不同?

2023-12-13

我用 firebase 做了一些测试,发现规则验证之间存在差异onDisconnect().update()和简单的update() using newData.parent()在规则中。

当我使用update()有用。但与onDisonnect().update()我有 PERMISSION_DENIED!

数据库规则:

{
    "rules": {
        "$id": {
            ".read": true,
            ".write": true,
            "a": { ".validate": true },
            "b": { ".validate": "newData.parent().child('a').val() == 'a'" },
        }
    }
}

JavaScript:

const valid = {
  a: 'a',
  b: 'b'
};

function update(obj) {
  console.log('update', obj);
  return ref.update(obj);
}

function onDisconnectUpdate(obj) {
  console.log('onDisconnectUpdate', obj);
  return ref.onDisconnect().update(obj);
}

update(valid);
onDisconnectUpdate(valid);

完整示例代码

See a screenshot here

我希望你可以帮助我。


火力战士在这里

期间onDisconnect()操作时,在我们验证规则时,每个属性都被视为单独的写入操作。这意味着在您的情况下操作失败。虽然这是一个不幸的设计,但在不久的将来不太可能改变。因此,我建议在中使用更简单的写入操作onDisconnect()处理程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么验证规则的行为(仅)与 onDisconnect 更新不同? 的相关文章

随机推荐

  • 基于 R 中不同数据帧的值进行子集化

    如果行中的每个值都大于不同数据框中的相应行 我想对数据进行子集化 我还需要跳过一些顶行 前面的这些问题对我没有帮助 但它是相关的 根据另一个数据帧的内容对数据帧进行子集化 使用来自不同数据帧的信息的数据子集 r gt A name1 nam
  • Propagation.REQUIRES_NEW 导致 LockWaitTimeOutException

    有两个函数 A 和 B 它们是用 Transactional 注解定义的 我从 A 给 B 打电话 Transactional value Constants READ WRITE REQUEST public int A B Transa
  • 将 stargazer 与 Zelig 结合使用

    我正在尝试使用 stargazer 版本 5 2 输出使用 Zelig 版本 5 0 13 估计的回归的标准摘要 结果 但是 我得到了错误 Error in envRefInferField x what getClass class x
  • 无法在 python 上找到图像

    我尝试在屏幕上找到图像 但它总是表明这一点 Traceback most recent call last File C Users MerazulIslam Desktop ZOOM BOT bot py line 20 in
  • 计算mysql中最后一行的总持续时间

    我有这个 mysql 查询 SELECT CONCAT u lastname u firstname AS Name start timestamp start end timestamp end timediff end timestam
  • 使用 matplotlib 在 Tkinter 中绘制数据 - 在列表之间切换

    我正在创建一个程序 利用Tkinter and matplotlib 我有 2 个列表列表 一个用于 x 轴 一个用于 y 轴 我希望有一个可以在列表中的列表之间切换的按钮 我从问题中获取了大部分代码基于Tkinter和matplotlib
  • 检测本地和远程之间不同步的所有标签

    有没有一种简单的方法可以确定本地存储库中哪些标签与远程不同步 不同步是指完全相同的标签名称指向本地与远程上的不同提交 我能想到的两种导致这种情况的方法可能是 有人 或某物 移动了我之前获取的标签 也许它被删除并重新创建 或者它是在它已经存在
  • 将 Java 代码与烘焙到 .jar 中的数据一起传送

    我需要发送一些具有关联数据集的 Java 代码 它是一个设备模拟器 我希望能够将用于模拟记录的所有数据包含在一个 JAR 文件中 在这种情况下 每个模拟记录包含四个字段 主叫方 被叫方 呼叫开始 呼叫持续时间 最好的方法是什么 我已经沿着以
  • 比较 ReadOnlyMemory 实例的最佳方法?

    The ReadOnlyMemory
  • 显示/隐藏 div,使用纯 JS

    My CSS a x200 visibility hidden width 200px height 200px background color black My JS 我的HTML div asd div
  • 如何将像素转换为 xamarin.forms 单位?

    每英寸有 160 个单位 2 如果我创建了一个Photoshop文件为 72dpi那么每英寸就有 72 个点 3 如果元素是88px身高在Photoshop那么我必须将其设置为xamarin 如果手机是 360dpi 那么 xamarin
  • 将双精度型转换为整型?

    我的代码如下 int main int argc char argv double f 18 40 printf d n int 10 f return 0 在VC6 0中结果是184 而Codeblock中结果是183 为什么呢 原因是
  • Symfony 任务 - 内存泄漏

    我编写了一个 symfony 任务来填充示例数据的数据库 这是一段示例代码 gc enable Propel disableInstancePooling public function test for i 0 i lt 10000 i
  • 保持绘制图形 - 删除 super.paintComponent

    我有一个名为 Foo 的类 它扩展了一个名为 Bar 的类 该类扩展了 JPanel 并实现了 ActionListener 当我选择圆形并单击绘制按钮时 我会绘制一个圆形 而当我按矩形并单击绘制时 它会擦除 以前的形状并绘制一个矩形 但是
  • osmdroid 经典标记重叠的解决方法

    我正在使用 osmdroid 和 osm Bonus Pack 开发 Android 离线地图应用程序 并从外部存储加载图块和数据 现在 随着数据的增长 标记开始变得拥挤在一起 我什至有同一建筑物上两个地方的情况 我知道这种问题以前已经被问
  • 范围报告:无法在其他机器上看到屏幕截图

    我可以在本地计算机上生成带有屏幕截图的范围报告 但是 当我将报告邮寄给其他人 或在不同的计算机上打开 html 时 屏幕截图不可见 它说该路径无效 在附加屏幕截图时 我给出了本地计算机的路径 它也在其他机器上搜索相同的路径 我也尝试将 ht
  • 在 Python 中使用 Twain 模块

    我有 64 位 Windows 和 64 位 Python 在里面吐温文档说 只支持32位 我用过吐温数据源安装我的 64 位机器并使用此代码连接扫描仪设备 import twain sm twain SourceManager 0 ss
  • 如何在 UWP 中使用 3 级语义缩放?

    我想使用语义缩放 或其效果 在我的 UWP 应用程序中选择位置 我想首先选择县 第二选择城市 第三选择位置 有人对此有真实的想法吗 我搜索了多个缩放以进行语义缩放 但这显然是不可能的 我使用了两个语义缩放视差 但这也有其问题 有人可以帮忙吗
  • Neo4j 中跨多个字段的全文搜索示例?

    我见过一些简单的文本搜索示例STARTS WITH name例如 http www jexp de blog html full text and spatial search in neo4j 3 html https blog knol
  • 为什么验证规则的行为(仅)与 onDisconnect 更新不同?

    我用 firebase 做了一些测试 发现规则验证之间存在差异onDisconnect update 和简单的update using newData parent 在规则中 当我使用update 有用 但与onDisonnect upda