You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firestore安全规则报错:diff()函数参数数量不正确的解决方法

修复Firestore规则中diff()函数的参数错误

错误原因

Firestore规则里的diff()方法必须传入一个对比基准的数据源参数,你之前调用diff()时没传任何参数,所以触发了"Incorrect number of arguments supplied to function: diff"的报错。

request.resource.data代表修改后的文档数据,要判断哪些字段被改动,必须和当前文档的原始数据(resource.data)做对比,这就是diff()需要的参数。

修复后的规则代码

function isEditableFieldForUsersPublic(request) {
  return request.resource.data.diff(resource.data).changedKeys().hasOnly(['avatarUrl', 'firstName']);
}

代码说明

  • resource.data:当前Firestore中存储的文档原始数据
  • diff(resource.data):计算修改后数据与原始数据的差异
  • changedKeys():提取所有被修改的字段名称集合
  • hasOnly(['avatarUrl', 'firstName']):限制只有指定的字段能被修改,其他字段的改动会被规则拦截

内容的提问来源于stack exchange,提问作者Jasperan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 10:15:54