メインコンテンツまでスキップ

upsert()

特定の条件に合致したレコードが存在すれば更新し、存在しなければ新規作成します。結果のレコードを返します。

使用できるキー

キー名内容省略備考
where検索条件の指定不可
create未存在時の作成データ不可
update存在時の更新データ不可
select戻り値の取得列の表示設定include と同時に使用できません
omit戻り値の取得列の除外設定select と同時に使用できません
includeリレーション先の取得詳細はこちら

説明例用のシート

説明用シート

説明

上記例から以下の処理を行いたいとします。

  • name が akahoshi の age を 23 にする
  • 存在しなければ新規作成する

この場合以下のコードとなります。

const gassma = new Gassma.GassmaClient();

// gassma.{{TARGET_SHEET_NAME}}.upsert
const result = gassma.sheet1.upsert({
where: {
name: "akahoshi",
},
update: {
age: 23,
},
create: {
name: "akahoshi",
age: 23,
pref: "Ibaraki",
postNumber: "310-8555",
},
});

レコードが存在する場合、更新後のレコードが返されます。

{
name: 'akahoshi',
age: 23,
pref: 'Ibaraki',
postNumber: '310-8555'
}

レコードが存在しない場合、create データで新規作成され、作成されたレコードが返されます。

const result = gassma.sheet1.upsert({
where: { name: "newuser" },
update: { age: 30 },
create: {
name: "newuser",
age: 30,
pref: "Tokyo",
postNumber: "100-0001",
},
});
// => { name: "newuser", age: 30, pref: "Tokyo", postNumber: "100-0001" }

Nested Write

リレーション定義がある場合、create / update 内で Nested Write が利用できます。

またwhereの仕様はfindMany()の記事に準拠します。