Firebase Cloud Functions中Firestore FieldValue.increment TypeError求助
Firebase Cloud Functions 递增Firestore字段报错求助
在Firebase模拟器中测试Cloud Functions时,尝试递增Cloud Firestore中的字段遇到错误,以下是相关代码、错误日志及依赖版本:
函数代码
import * as functions from "firebase-functions"; import * as admin from "firebase-admin"; admin.initializeApp(); const db = admin.firestore(); export const newUserIncrementStat = functions.firestore.document("users/{uid}").onCreate((snap, context) => { const docRef = db.doc("stats/users"); try { return docRef.set({ totalUsers: admin.firestore.FieldValue.increment(1), }, {merge: true}); } catch (e) { console.log("Something is wrong: ", e); return Promise.reject(e); } });
错误日志
TypeError: Cannot read properties of undefined (reading 'increment')
依赖版本
- firebase-admin: "^11.0.0"
- firebase-functions: "^3.22.0"
- firebase: 11.3.0
问题原因及修复方案
报错核心是FieldValue的引用路径错误,当前firebase-admin版本中,FieldValue需通过已初始化的Firestore实例(即代码中的db)访问,而非直接从admin.firestore获取。
修改代码中的递增字段部分:
将
admin.firestore.FieldValue.increment(1)
替换为
db.FieldValue.increment(1)
修改后的完整函数代码:
import * as functions from "firebase-functions"; import * as admin from "firebase-admin"; admin.initializeApp(); const db = admin.firestore(); export const newUserIncrementStat = functions.firestore.document("users/{uid}").onCreate((snap, context) => { const docRef = db.doc("stats/users"); try { return docRef.set({ totalUsers: db.FieldValue.increment(1), }, {merge: true}); } catch (e) { console.log("Something is wrong: ", e); return Promise.reject(e); } });
若修改后仍有问题,可重新安装依赖确保版本兼容:
npm install
内容的提问来源于stack exchange,提问作者user19600961
相关产品推荐
相关产品推荐

