簡體   English   中英

雲功能 firebase v9 runTransaction

[英]cloud functions firebase v9 runTransaction

這是我的雲 function:

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 的正確方法

看來您正在為 NodeJS 使用管理員 SDK 此 SDK 與 Web SDK V9 的初始化方式不同,您使用功能的方式也不同。 是有關如何從頭開始初始化管理員 SDK 的詳細指南。 在嘗試添加或導入runTransaction() function 作為您的示例代碼后,我也收到了相同的錯誤消息。 除了文檔示例之外,我還按照入門指南正確使用了這個 function,方法是從創建的 firestore object 中使用它:

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

此附加頁面包含使用事務的不同示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM