举报投诉联系我们 手机版 热门标签 鳄鱼CMS
您的位置:鳄鱼CMS > SDK数据库 database·开始事务

SDK数据库 database·开始事务

2023-04-01 12:31

 SDK数据库 database·开始事务

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


阅读全文
以上是鳄鱼CMS为你收集整理的 SDK数据库 database·开始事务全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  • 微信小程序 form 微信小程序 WeUI·Form

    微信小程序 form 微信小程序 WeUI·Form

    2023-04-30

    FormForm表单组件,结合Cell、Checkbox-group、Checkbox组件等做表单校验。示例代码:{"component": true,"usingComponents": {"...

  • vue列表渲染的代码 Vue 3.0 列表渲染

    vue列表渲染的代码 Vue 3.0 列表渲染

    2023-03-21 VUE3教程

    #用 v-for 把一个数组对应为一组元素我们可以用 v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式...

  • vue3 注入 Vue 3.0 提供/注入

    vue3 注入 Vue 3.0 提供/注入

    2023-06-02 VUE3教程

    该页面假设你已经阅读过了组件基础。如果你还对组件不太了解,推荐你先阅读它。通常,当我们需要将数据从父组件传递到子组件时,...

  •  Sublime Text 风格

    Sublime Text 风格

    2023-04-01 Sublime Text 风格

    风格(Styles)风格对于任何软件都很重要,对编辑器也是如此,尤其是GUI环境下的编辑器。作为一个程序员,我希望我的编辑器足够...

  •  Sublime text 是用什么语言开发的?

    Sublime text 是用什么语言开发的?

    2023-06-10

    Sublimetext,几乎所有(估计有99%)的代码,都是C++写的;极少数的部分,用到了Object-C;关于插件部分,用到了Python;Object-...

© 2024 鳄鱼CMS eyucms.com 版权所有 联系我们