cloudfunctions/SegmentPortraitPic/node_modules/@cloudbase/database/src/transaction.ts

(开头部分) 4KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

import { EJSON } from 'bson'
import { DocumentReference } from './document'
import { Db } from './index'

class DocumentSnapshot {
  private _data: any
  requestId: string
  constructor(data, requestId) {
    this._data = data
    this.requestId = requestId
  }

  data() {
    return this._data
  }
}

const START = 'database.startTransaction'
const COMMIT = 'database.commitTransaction'
const ABORT = 'database.abortTransaction'
const GET_DOC = 'database.getInTransaction'
const UPDATE_DOC = 'database.updateDocInTransaction'
const DELETE_DOC = 'database.deleteDocInTransaction'

interface TransactionAPI {
  send(interfaceName: string, param?: any)
}

export class Transaction {
  private _id: string

  private _db: Db

  private _request: TransactionAPI

  public constructor(db: Db) {
    this._db = db
    this._request = new Db.reqClass(this._db.config)
  }

  async init(): Promise<void> {
    const res = await this._request.send(START, {})
    if (res.code) {
      throw res
    }
    this._id = res.transactionId
  }

  async get(documentRef: DocumentReference): Promise<DocumentSnapshot> {
    const param = {
      collectionName: documentRef._coll,
      transactionId: this._id,
      _id: documentRef.id
    }
    const res = await this._request.send(GET_DOC, param)
    if (res.code) throw res
    return new DocumentSnapshot(EJSON.parse(res.data), res.requestId)
  }

  async set(documentRef: DocumentReference, data: Object): Promise<SetResult> {
后面还有 130 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。