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

如何使用Firebase Modular SDK V9实现Firestore数据字段的增量更新

实现方案

你要实现的字段增量更新直接用Firestore内置的increment原子操作即可,不需要手动读取当前值再修改写入,还能避免并发更新导致的数据覆盖问题。

  • 若你使用的是v9+版本模块化SDK,先从firestroe模块导入该方法:
import { increment } from "firebase/firestore";
  • 替换你代码中num字段的赋值部分即可,increment的参数就是你要增加的数值,要做减法直接传负数即可。

修改后完整代码

// 顶部先导入increment方法
import { increment } from "firebase/firestore";

const sendNum = async(e) => {
  e.preventDefault();

  const targetQuery = query(userCol, where("keycode", "==", parseInt(target)));
  const targetSnapshot = await getDocs(targetQuery)

  targetSnapshot.forEach((document) => {
    console.log(document.data().num)
    console.log(document.id)
    const targetRef = doc(db, 'users', document.id)

    setDoc(targetRef, {
      // 示例是给num字段加1,替换参数为你需要的增量数值即可
      num: increment(1)
    }, {merge: true})
  })
}

补充说明

  • increment是Firestore提供的原子操作,服务端会自动计算当前字段值+增量的结果,完全避免多个请求同时更新时的数值错误问题。
  • 如果你还在使用v8及之前的旧版命名空间式SDK,对应写法为firebase.firestore.FieldValue.increment(1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:36:01