【问题标题】:cloud functions firebase v9 runTransaction云功能 firebase v9 runTransaction
【发布时间】:2021-12-30 11:03:06
【问题描述】:

这是我的云功能:

const { getFirestore, runTransaction, FieldValue } = require('firebase-admin/firestore')

exports.purchasesStatistics = functions.firestore
    .document('transactions/{purchaseId}')
    .onUpdate((snap, context ) => {
      if (snap.before.data().status === 'RECEIVED') {
        return '0'
      }
      let purchasePaid = snap.after.data().status === 'RECEIVED' ? true : false
      if (purchasePaid === false) {
        return '0'
      }
      let allPurchase = snap.after.data()
      functions.logger.log('allPurchase', allPurchase)
      let ref = getFirestore().collection('statistics').doc('checkout')
      return runTransaction(ref, (transaction) => {
        return transaction.get(ref).then((doc) => {
          functions.logger.log('documento atualizado:', doc.data())
          return '0'
        })
      })
    })

购买,它返回“runTransaction 不是函数”。我做错了什么?没有找到在 firebase v9 上使用 runTransaction 的正确方法

【问题讨论】:

    标签: node.js firebase transactions google-cloud-functions


    【解决方案1】:

    看来您正在为 NodeJS 使用 admin SDK。该 SDK 的初始化方式与 Web SDK V9 不同,使用功能的方式也不同。 Here 是关于如何从头开始初始化 admin SDK 的详细指南。在尝试添加或导入 runTransaction() 函数作为您的示例代码后,我也收到了相同的错误消息。除了文档 example 之外,我还遵循了 get started guide 来正确使用此功能,方法是从创建的 firestore 对象中使用它:

    const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
    const { getFirestore } = require('firebase-admin/firestore');
    const serviceAccount = require('/path-to-service-account'); //Path to your service account, depends on implementation
    
    initializeApp({
        credential: cert(serviceAccount)
    });
    
    const fireDB = getFirestore();
    fireDB.runTransaction(); //Use the relevant args
    

    这个附加的page 包含一个使用事务的不同示例。

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 2020-06-09
      • 2018-11-29
      • 2018-05-09
      • 2020-06-13
      • 2020-11-12
      • 2019-03-22
      • 2017-08-01
      相关资源
      最近更新 更多