[英]Firebase cloud function runTransaction() not returning anything v8
[英]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.