FeaturesCMS SDKコンテンツの操作

コンテンツの操作

CMS SDKを使用したコンテンツ操作の方法を説明します。このドキュメントでは以下の内容を解説します。

  • コンテンツの作成・更新・削除
  • 下書きコンテンツの公開
  • 公開データの下書き化
  • storage型カラムにデータを保存

下書き機能を利用するにはテーブルの下書き管理機能を有効にする必要があります。詳細は 下書き管理 を参照してください。

コンテンツの作成

指定したテーブルに新しいコンテンツを公開状態で作成します。

const data = await client.tables.blog.create({
  slug: "hello-world",
  title: "Hello World",
  content: "This is my first post.",
});

下書きでの作成

draft オプションを true にすると、コンテンツを下書き状態で作成できます。

const data = await client.tables.blog.create(
  {
    slug: "hello-world",
    title: "Hello World",
    content: "Draft content here...",
  },
  { draft: true },
);

コンテンツの更新

指定したIDのコンテンツを更新します。

const data = await client.tables.blog.update(blogId, {
  title: "Updated Title",
  content: "Updated content.",
});

部分更新

update メソッドでは、すべてのフィールドを指定する必要はありません。更新したいフィールドのみを指定することで部分更新が可能です。

以下の例では、title のみを更新し、その他のフィールドは変更されません。

const data = await client.tables.blog.update(blogId, {
  title: "Updated Title",
});

undefined な値のフィールドは変更されず、既存の値が保持されます。
null を明示的に設定した場合は、そのフィールドが null に更新されます。

以下の例では、title は変更されず、contentnull に更新されます。

await client.tables.blog.update(blogId, {
  title: undefined,
  content: null,
});

下書きでの更新

draft オプションを true にすると下書き状態でコンテンツを更新します。公開されているコンテンツには影響しません。

const data = await client.tables.blog.update(
  blogId,
  {
    title: "Draft Title",
    content: "Work in progress...",
  },
  { draft: true },
);

コンテンツの削除

指定したIDの公開コンテンツを削除します。

await client.tables.blog.delete(blogId);

下書きの削除

draft オプションを true にすると、下書き状態のコンテンツのみを削除します。公開されているコンテンツは残ります。

await client.tables.blog.delete(blogId, {
  draft: true,
});

下書きコンテンツの公開

下書き状態のコンテンツを公開します。

const data = await client.tables.blog.publish(blogId);

下書きの更新と同時公開

コンテンツを更新しながら同時に公開することも可能です。

const data = await client.tables.blog.publish(blogId, {
  title: "Fixed Title",
  content: "Fixed content.",
});

公開コンテンツの下書き化

公開されているコンテンツを下書き状態に戻します。

const data = await client.tables.blog.unpublish(blogId);

フォーム受信データの管理

テーブルのフォーム管理機能が有効な場合のみ利用可能です。詳細は フォーム管理 を参照してください。

受信データの更新

受信データの内容は変更できませんが、管理用のカラムを更新できます。
例えば status カラムに対応状況を記録したり、 memo カラムに情報を残しておくことも可能です。

await client.tables.form.submissions(formId).update(blogId, {
  status: "in_progress",
  memo: "Started working on this.",
});

以下のデータは読み取り専用です。

  • _content: 受信データの内容
  • _formSchema: フォームのスキーマ情報
  • _attachments: 添付ファイル

受信データの削除

delete() メソッドで受信データを削除できます。

await client.tables.form.submissions(formId).delete(submissionId);

storage型カラムにデータを保存

storage型カラムについては storage を参照してください。

uploadFile() メソッドを使用してファイルをアップロードします。このとき、戻り値として handle を取得します。

const { handle } = await orizm.tables.blog.uploadFile(file);

次に create()update() などのメソッドを使用してレコードを作成や更新します。このとき、storage型カラムに handle を設定します。

await orizm.tables.blog.update({
  thumbnail: { handle },
});

この2ステップでファイルをレコードに紐づけることができます。