APIリファレンス(JavaScript)

baasatrakuza > Rakuza > batch

Rakuza.batch() method

バッチ処理のClientを新しく生成して返します。

Signature:

batch(): BatchClient;

Returns:

BatchClient

Example 1

配列で受け取る場合

const batch = RKZ.batch()

// バッチ処理したい操作を各Clientクラスで生成して、Clientに追加
batch.addOp(RKZ.Data.query('shop').createFindOp())
batch.addOp(RKZ.User.createEditOp({
  attributes: {
    nickname: 'BaaS Kun'
  }
}))

try {
  // バッチ処理を実行。結果は配列(タプル)で受け取る。(分割代入を使用すると、簡潔に変数に代入できる)
  const [dataResult, user] = await batch.exec<[DataResult, User]>(userAccessToken)
  // ...
} catch (error) {
  // エラーが発生した場合はBatchErrorがスローされる。
  if (error instanceof RKZ.BatchError) {
    console.error('status_code:', error.status_code)
    console.error('message:', error.message)

    // 各操作の結果はresultsで参照できる(エラーの場合、RKZErrorのインスタンスが入る)
    const [dataResult, user] = error.results as [DataResult | RKZError, User | RKZError]
    // ...
  }
}

Example 2

オブジェクトで受け取る場合

interface Results {
  dataResult: DataResult
  user: User
}
interface ResultOrErrors {
  dataResult: DataResult | RKZError
  user: User | RKZError
}

const batch = RKZ.batch()

// バッチ処理したい操作を各Clientクラスで生成して、Clientに追加
batch.addOp(RKZ.Data.query('shop').createFindOp(), 'dataResult') // 受け取るオブジェクトのプロパティ名を指定する
batch.addOp(RKZ.User.createEditOp({
  attributes: {
    nickname: 'BaaS Kun'
  }
}), 'user')

try {
  // バッチ処理を実行。結果はオブジェクトで受け取る。(分割代入を使用すると、簡潔に変数に代入できる)
  const { dataResult, user } = await batch.exec<Results>(userAccessToken)
  // ...
} catch (error) {
  // エラーが発生した場合はBatchErrorがスローされる。
  if (error instanceof RKZ.BatchError) {
    console.error('status_code:', error.status_code)
    console.error('message:', error.message)

    // 各操作の結果はresultsで参照できる(エラーの場合、RKZErrorのインスタンスが入る)
    const { dataResult, user } = error.results as ResultOrErrors
    // ...
  }
}