繰り返しフィールドでの絞り込みはどのように実装しますか?

→filtersパラメータを使用することで絞り込みが可能です

繰り返しフィールドはfiltersパラメータを使用し{フィールドID}.{カスタムフィールドID}.{絞り込みに用いるフィールドID}[条件]{VALUE}とすることで繰り返しフィールド内の値を対象に絞り込みが可能です。

繰り返しフィールド内のフィールドを対象に絞り込みをする場合、利用できるfiltersパラメータの条件に制限があります。

利用できる条件はドキュメントを参照してください。

リクエスト例

具体的には、以下のようにリクエストすることで絞り込むことが可能です。

client
      .get({
        endpoint: 'event',
        queries: { filters: 'timeTable.details.actors[contains]山田太郎' }
      })
      .then((res) => console.log(res));

実装例

イベントのタイムスケジュールを管理しているサイトを例にしてスキーマ設定から繰り返しフィールドでの絞り込みの方法まで紹介します。

タイムスケジュールは繰り返しフィールドで設定し、以下の情報を設定します。

  • 出演者
  • 開始時間
  • 終了時間

想定する絞り込みの例

繰り返しフィールドで設定した出演者に「山田太郎」が含まれているコンテンツを絞り込む。

1. カスタムフィールドの基本情報を設定

2. カスタムフィールドのAPIスキーマを定義

今回はイベントのタイムスケジュールを管理するサイトを想定しているので以下のスキーマを設定します。

  • 出演者(テキストフィールド)
  • 開始時間(セレクトフィールド)
  • 終了時間(セレクトフィールド)

3. 作成したカスタムフィールドを繰り返しフィールドで利用

「API設定」>「APIスキーマ」に移動し、フィールドの種類から「繰り返し」を選択します。

先ほど作成したカスタムフィールド(タイムテーブル詳細)を選択

4.  コンテンツにタイムテーブルの情報を入力して保存する

5.  filtersパラメータを使用して絞り込む

出演者に「山田太郎」が含まれているコンテンツを絞り込みたいので以下のリクエストURLでクエリを実行します。

https://{SERVICE_ID}.microcms.io/api/v1/event?filters=timeTable.details.actors[contains]山田太郎