W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
支持端:云函數(shù)
開始事務(wù),另一個(gè)同樣可以使用的發(fā)起事務(wù)的 API 是 runTransaction。僅可在云函數(shù)中使用。
resolve 的結(jié)果為事務(wù)操作對(duì)象,其上可通過 collection API 操作數(shù)據(jù)庫(kù),通過 commit 或 rollback 來(lái)結(jié)束或終止事務(wù)。
事務(wù)現(xiàn)僅支持在云函數(shù) wx-server-sdk 使用。事務(wù)操作時(shí)為保障效率和并發(fā)性,只允許進(jìn)行單記錄操作,不允許進(jìn)行批量操作,但可以在一個(gè)事務(wù)中對(duì)多個(gè)記錄進(jìn)行操作。
兩個(gè)賬戶之間進(jìn)行轉(zhuǎn)賬的簡(jiǎn)易示例
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database({
throwOnNotFound: false,
})
const _ = db.command
exports.main = async (event) => {
try {
const transaction = await db.startTransaction()
const aaaRes = await transaction.collection('account').doc('aaa').get()
const bbbRes = await transaction.collection('account').doc('bbb').get()
if (aaaRes.data && bbbRes.data) {
const updateAAARes = await transaction.collection('account').doc('aaa').update({
data: {
amount: _.inc(-10)
}
})
const updateBBBRes = await transaction.collection('account').doc('bbb').update({
data: {
amount: _.inc(10)
}
})
await transaction.commit()
console.log(`transaction succeeded`)
return {
success: true,
aaaAccount: aaaRes.data.amount - 10,
}
} else {
await transaction.rollback()
return {
success: false,
error: `rollback`,
rollbackCode: -100,
}
}
} catch (e) {
console.error(`transaction error`, e)
return {
success: false,
error: e
}
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: