日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)小程序教程:SDK數(shù)據(jù)庫database·發(fā)起事務(wù)

Database.runTransaction(callback: function, times: number): Promise

支持端:云函數(shù)

我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、玉州ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的玉州網(wǎng)站制作公司

發(fā)起事務(wù)。僅可在云函數(shù)中使用。

參數(shù)

callback: function

事務(wù)執(zhí)行函數(shù),需為 async 異步函數(shù)或返回 Promise 的函數(shù)

times: number

事務(wù)執(zhí)行最多次數(shù),默認(rèn) 3 次,成功后不重復(fù)執(zhí)行,只有事務(wù)沖突時會重試,其他異常時不會重試

返回值

Promise.

resolve 的結(jié)果為 callback 事務(wù)執(zhí)行函數(shù)的返回值,reject 的結(jié)果為事務(wù)執(zhí)行過程中拋出的異?;蛘呤?transaction.rollback 傳入的值

事務(wù)執(zhí)行函數(shù)說明

事務(wù)執(zhí)行函數(shù)由開發(fā)者傳入,函數(shù)接收一個參數(shù) transaction(類型定義見 Transaction),其上提供 collection 方法和 rollback 方法。collection 方法用于取數(shù)據(jù)庫集合記錄引用進(jìn)行操作,rollback 方法用于在不想繼續(xù)執(zhí)行事務(wù)時終止并回滾事務(wù)。

事務(wù)執(zhí)行函數(shù)必須為 async 異步函數(shù)或返回 Promise 的函數(shù),當(dāng)事務(wù)執(zhí)行函數(shù)返回時,SDK 會認(rèn)為用戶邏輯已完成,自動提交(commit)事務(wù),因此務(wù)必確保用戶事務(wù)邏輯完成后才在 async 異步函數(shù)中返回或 resolve Promise。

事務(wù)執(zhí)行函數(shù)可能會被執(zhí)行多次,在內(nèi)部發(fā)現(xiàn)事務(wù)沖突時會自動重復(fù)執(zhí)行,如果超過設(shè)定的執(zhí)行次數(shù)上限,會報錯退出。

在事務(wù)執(zhí)行函數(shù)中發(fā)生的錯誤,都會認(rèn)為事務(wù)執(zhí)行失敗而拋錯。

事務(wù)執(zhí)行函數(shù)返回的值會作為 runTransaction 返回的 Promise resolve 的值,在函數(shù)中拋出的異常會作為 runTransaction 返回的 Promise reject 的值,如果事務(wù)執(zhí)行函數(shù)中調(diào)用了 transaction.rollback,則傳入 rollback 函數(shù)的值會作為 runTransaction 返回的 Promise reject 的值。

限制

事務(wù)現(xiàn)僅支持在云函數(shù) wx-server-sdk 使用。事務(wù)操作時為保障效率和并發(fā)性,只允許進(jìn)行單記錄操作,不允許進(jìn)行批量操作,但可以在一個事務(wù)中對多個記錄進(jìn)行操作。

注意事項

開發(fā)者提供的事務(wù)執(zhí)行函數(shù)正常返回時,SDK 會自動提交(commit)事務(wù),請勿在事務(wù)執(zhí)行函數(shù)內(nèi)調(diào)用 transaction.commit 方法,該方法僅在通過 db.startTransaction 進(jìn)行事務(wù)操作時使用。

示例代碼

兩個賬戶之間進(jìn)行轉(zhuǎn)賬的簡易示例

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 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`)

        // 會作為 runTransaction resolve 的結(jié)果返回
        return {
          aaaAccount: aaaRes.data.amount - 10,
        }
      } else {
        // 會作為 runTransaction reject 的結(jié)果出去
        await transaction.rollback(-100)
      }
    })

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

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

網(wǎng)站標(biāo)題:創(chuàng)新互聯(lián)小程序教程:SDK數(shù)據(jù)庫database·發(fā)起事務(wù)
文章URL:http://www.dlmjj.cn/article/dhhpipi.html