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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:06:04