如何使用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
相关产品推荐
相关产品推荐

