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 时可调用)