• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

SDK数据库 database·开始事务

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Database.startTransaction():Promise<Transaction>

支持端:云函数

开始事务,另一个同样可以使用的发起事务的 API 是 runTransaction。仅可在云函数中使用。

返回值

Promise.<Transaction>

resolve 的结果为事务操作对象,其上可通过 collection API 操作数据库,通过 commit 或 rollback 来结束或终止事务。

限制

事务现仅支持在云函数 wx-server-sdk 使用。事务操作时为保障效率和并发性,只允许进行单记录操作,不允许进行批量操作,但可以在一个事务中对多个记录进行操作。

示例代码

两个账户之间进行转账的简易示例

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
    }
  }
}



鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
SDK数据库 Collection·索引发布时间:2022-02-02
下一篇:
SDK数据库 database·发起事务发布时间:2022-02-02
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap