Firebase v9 Cloud Functions调用runTransaction报not a function如何解决
问题原因
- Firebase Admin v9 模块化 SDK 中
runTransaction的调用规则是第一个参数必须传入 Firestore 实例,你现有代码错误地将文档引用作为第一个参数传入,导致方法调用匹配失败抛出报错。
修复代码
const { getFirestore, runTransaction, FieldValue } = require('firebase-admin/firestore') // 提前初始化Firestore实例,避免重复调用 const db = getFirestore() exports.purchasesStatistics = functions.firestore .document('transactions/{purchaseId}') .onUpdate((snap, context ) => { if (snap.before.data().status === 'RECEIVED') { return '0' } const purchasePaid = snap.after.data().status === 'RECEIVED' if (!purchasePaid) { return '0' } const allPurchase = snap.after.data() functions.logger.log('allPurchase', allPurchase) const ref = db.collection('statistics').doc('checkout') // 第一个参数传入Firestore实例db,而非文档引用ref return runTransaction(db, (transaction) => { return transaction.get(ref).then((doc) => { functions.logger.log('documento atualizado:', doc.data()) // 后续如需更新统计数据,可在此处添加 transaction.update 相关逻辑 return '0' }) }) })
额外说明
当前你事务逻辑仅做了文档查询操作,没有数据写入逻辑,你可以根据自己的统计需求在事务回调中添加对应的更新、写入逻辑即可。
内容的提问来源于stack exchange,提问作者eeerrrttt
相关产品推荐
相关产品推荐

