本文整理自网络,侵删。
Transaction
数据库事务操作对象
方法:
Transaction.collection(name: string): Collection
支持端:云函数事务中获取集合的引用。方法接受一个 name 参数,指定需引用的集合名称。
参数
name: string
集合名称
返回值
Collection
集合引用
注意事项
在事务中仅能进行单记录操作,也就是不能使用 where、aggregate 接口,可以使用的接口如下:
collection 获取集合引用
|-- add 新增记录
|-- doc 获取记录引用
|-- get 获取记录内容
|-- update 更新记录内容
|-- set 替换记录内容
|-- remove 删除记录
Transaction.rollback(reason: any): Promise<void>
支持端:云函数终止并回滚事务
参数
reason: any
终止后,希望在 runTransaction 返回的 Promise reject 时接收到的值。
返回值
Promise.<void>
终止完成
示例代码
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database({
throwOnNotFound: false,
})
const _ = db.command
try {
const result = await db.runTransaction(async transaction => {
const aaaRes = await transaction.collection('account').doc('aaa').get()
// ...
// 终止事务
await transaction.rollback(-100)
})
} catch (e) {
// e === -100
console.error(`transaction error`, e)
}
Transaction.commit(reason: any): Promise<void>
支持端:云函数提交事务
参数
reason: any
终止后,希望在 runTransaction 返回的 Promise reject 时接收到的值。
返回值
Promise.<void>
提交完成
示例代码
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()
// ...
await transaction.collection('account').doc('aaa').update({
data: {
amount: 100
}
})
// 提交事务
await transaction.commit()
return {
success: true,
}
} catch (e) {
console.error(`transaction error`, e)
return {
success: false,
error: e,
}
}
}
API 列表:
transaction
|-- collection 获取集合引用
| |-- doc 获取记录引用
| | |-- get 获取记录内容
| | |-- update 更新记录内容
| | |-- set 替换记录内容
| | |-- remove 删除记录
| |-- add 新增记录
|-- rollback 终止事务并回滚
|-- commit 提交事务(仅在使用 startTransaction 时可调用)
标签:微信小程序
相关阅读 >>
更多相关阅读请进入《微信小程序》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者