新聞中心
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ù)范圍遍及中國大陸、港澳臺(tái)以及歐美等多個(gè)國家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。
開始事務(wù),另一個(gè)同樣可以使用的發(fā)起事務(wù)的 API 是 runTransaction。僅可在云函數(shù)中使用。
返回值
Promise.
resolve 的結(jié)果為事務(wù)操作對象,其上可通過 collection API 操作數(shù)據(jù)庫,通過 commit 或 rollback 來結(jié)束或終止事務(wù)。
限制
事務(wù)現(xiàn)僅支持在云函數(shù) wx-server-sdk 使用。事務(wù)操作時(shí)為保障效率和并發(fā)性,只允許進(jìn)行單記錄操作,不允許進(jìn)行批量操作,但可以在一個(gè)事務(wù)中對多個(gè)記錄進(jìn)行操作。
示例代碼
兩個(gè)賬戶之間進(jìn)行轉(zhuǎ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
}
}
}
分享題目:創(chuàng)新互聯(lián)小程序教程:SDK數(shù)據(jù)庫database·開始事務(wù)
本文來源:http://www.5511xx.com/article/cohgpho.html


咨詢
建站咨詢

