💽

workers-qbでD1を操作する時のメモ

2023/11/18に公開

よく使うクエリとか注意点とか。

try-cacheを使う

workersでworkers-qbからD1を操作した場合、try-cacheを使わないとエラーが出力されない。

try {
  const updated = await qb
    .update({
      tableName: "employees",
      data: {
	// snip
      },
      where: {
	// snip
      },
    })
    .execute();
} catch (e) {
  console.error(e);
  throw e;
}

updated_at は手動更新

データを更新しただけでは自動更新してくれない。

公式ページに掲載されている通り、明示的にアップデートを行う。

import { Raw } from 'workers-qb' // Raw をインポートする
const qb = new D1QB(env.DB)

const updated = await qb
  .update({
    tableName: 'employees',
    data: {
      role: 'CEO',
      department: 'HQ',
      updated_at: new Raw('CURRENT_TIMESTAMP'), // 今の時刻でupdated_atを更新する
    },
    where: {
      conditions: 'id = ?1',
      params: [123],
    },
  })
  .execute() // updateを実行する

Discussion