cloud functions firebase v9 runTransaction



这是我的云函数:

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()函数作为示例代码后,我也收到了相同的错误消息。除了文档示例之外,我还遵循了入门指南,通过从创建的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

此附加页面包含一个不同的使用事务的示例。

最新更新