新聞中心
Database.startTransaction():Promise
支持端:云函數(shù)
成都創(chuàng)新互聯(lián)是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),網(wǎng)站空間、主機(jī)租用、主機(jī)托管,四川、重慶、廣東電信服務(wù)器租用,雅安服務(wù)器托管,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國(guó)大陸、港澳臺(tái)以及歐美等多個(gè)國(guó)家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。
開(kāi)始事務(wù),另一個(gè)同樣可以使用的發(fā)起事務(wù)的 API 是 runTransaction。僅可在云函數(shù)中使用。
返回值
Promise.
resolve 的結(jié)果為事務(wù)操作對(duì)象,其上可通過(guò) collection API 操作數(shù)據(jù)庫(kù),通過(guò) 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è)賬戶(hù)之間進(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
}
}
}
當(dāng)前題目:創(chuàng)新互聯(lián)小程序教程:SDK數(shù)據(jù)庫(kù)database·開(kāi)始事務(wù)
URL地址:http://m.5511xx.com/article/cohgpho.html


咨詢(xún)
建站咨詢(xún)

