收藏
回答

官方代码有bug

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 工具 wx4e1ba30bdbcb271d cloud1-3g0985ox05f41f2d 2.14.1

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/transaction.html


const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database({
  // 该参数从 wx-server-sdk 1.7.0 开始支持,默认为 true,指定 false 后可使得 doc.get 在找不到记录时不抛出异常
  throwOnNotFound: false,
})
const _ = db.command

exports.main = async (event) => {
  try {
    const result = await db.runTransaction(async transaction => {
      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)
          }
        })

        console.log(`transaction succeeded`, result) // 这句会报错

        // 会作为 runTransaction resolve 的结果返回
        return {
          aaaAccount: aaaRes.data.amount - 10,
        }
      } else {
        // 会作为 runTransaction reject 的结果出去
        await transaction.rollback(-100)
      }
    })

    return {
      success: true,
      aaaAccount: result.aaaAccount,
    }
  } catch (e) {
    console.error(`transaction error`, e)

    return {
      success: false,
      error: e
    }
  }
}



        console.log(`transaction succeeded`, result) // 这句会报错


回答关注问题邀请回答
收藏

2 个回答

  • 疯狂的小辣椒
    疯狂的小辣椒
    2021-11-22

    你好,反馈已收到,我们核实处理下。

    2021-11-22
    有用
    回复
  • 李刚
    李刚
    2021-11-16

    麻烦官方修改demo代码,否则影响其他开发者。

    2021-11-16
    有用
    回复
登录 后发表内容