Document Service API
Document Service API は Query Engine API の上に構築されています。 ドキュメント に対して CRUD(作成、取得、更新、削除)を行います。
Document Service API はドキュメントの 件数カウント にも対応し、コンテンツタイプで 下書きと公開 が有効な場合は、公開、公開取り下げ、下書きの破棄 など Strapi 固有の操作も行えます。
Strapi 5 では、API レベルでドキュメントは documentId で一意に識別されます。
Document Service API は Strapi v4 で使われていた Entity Service API に代わります(Strapi v4 のドキュメント)。
Entity Service API からの移行手順は 移行リファレンス を参照してください。
リレーションの接続・切断・設 定は REST API と同様に Document Service API でも行えます(例は REST API のリレーション を参照)。
設定
documents.strictParams は、findMany や findOne など Document Service メソッドに渡すパラメータを厳密に検証するオプションです。API 設定 ファイル(./config/api.js または ./config/api.ts)で設定します。documents.strictParams の詳細は API 設定 の表を参照してください。
ドキュメントオブジェクト
Document の各メソッドは、安定した documentId のもとにまとめられたコンテンツエントリのあるバージョンを表す、ドキュメントオブジェクトまたはその配列を返します。返却オブジェクトに通常含まれるものは次のとおりです。
documentId: ロケールや下書き/公開をまたいでエントリを指し続ける永続的な識別子。id: 特定のロケール/バージョンのレコードに対応するデータベース上の識別子。- モデルフィールド: コンテンツタイプスキーマで定義されたすべてのフィールド。リレーション、コンポーネント、ダイナミックゾーンは、
populateで明示しない 限りポピュレートされません(フィールドのポピュレート)。fieldsで返すフィールドを絞れます(フィールドの選択)。 - メタデータ: 利用可能な場合は
publishedAt、createdAt、updatedAt、createdBy/updatedBy。
コンテンツタイプで 下書きと公開 と Internationalization が有効なら、ドキュメントオブジェクトに status や locale が含まれることもあります。
メソッド一覧
以下ではメソッドごとにパラメータと例を説明します。
| メソッド | 用途 |
|---|---|
findOne() | documentId でドキュメントを取得。ロケールや status で絞り込み可能。 |
findFirst() | フィルターに一致する最初の 1 件を返す。 |
findMany() | フィルター・ソート・ページネーション付きで一覧を返す。 |
create() | ドキュメントを作成。ロケールを指定可能。 |
update() | documentId でドキュメントを更新。 |
delete() | ドキュメントまたは特定ロケール版を削除。 |
publish() | ドキュメントの下書きを公開する。 |
unpublish() | 公開済みドキュメントを下書きに戻す。 |
discardDraft() | 下書きデータを捨て、公開版だけを残す。 |
count() | 条件に一致するドキュメント数を数える。 |
findOne()
渡した documentId とパラメータに一致するドキュメントを取得します。
構文: findOne(parameters: Params) => Document
パラメータ
| パラメータ | 説明 | 既定値 | 型 |
|---|---|---|---|
documentId | ドキュメント ID | ID | |
locale | 取得するドキュメントのロケール。 | 既定ロケール | 文字列または undefined |
status | コンテンツタイプで 下書きと公開 が有効な場合: 公開状態。次のいずれか。
| 'draft' | 'published' または 'draft' |
fields | 返すフィールドを選択 | すべてのフィールド (既定でポピュレートされないものを除く) | Object |
populate | 追加フィールドを ポピュレート する。 | null | Object |
例
documentId だけを渡し他にパラメータがない場合、findOne() は既定ロケールの下書き版を返します。
await strapi.documents('api::restaurant.restaurant').findOne({
documentId: 'a1b2c3d4e5f6g7h8i9j0klm'
})
{
documentId: "a1b2c3d4e5f6g7h8i9j0klm",
name: "Biscotte Restaurant",
publishedAt: null, // draft version (default)
locale: "en", // default locale
// …
}
findOne() は一致するドキュメントがあればそれを返し、なければ null を返します。
findFirst()
パラメータに一致する最初のドキュメントを取得します。
構文: findFirst(parameters: Params) => Document
パラメータ
| パラメータ | 説明 | 既定値 | 型 |
|---|---|---|---|
locale | 検索対象ドキュメントのロケール。 | 既定ロケール | 文字列または undefined |
status | コンテンツタイプで 下書きと公開 が有効な場合: 公開状態。次のいずれか。
| 'draft' | 'published' または 'draft' |
filters | 使う フィルター | null | Object |
fields | 返すフィールドを選択 | すべてのフィールド (既定でポピュレートされないものを除く) | Object |
populate | 追加フィールドを ポピュレート する。 | null | Object |
例
基本的な例
既定では、findFirst() は渡した一意識別子(コレクション型の id またはシングル型の id)に対応する最初のドキュメントの、既定ロケールの下書き版を返します。
await strapi.documents('api::restaurant.restaurant').findFirst()
{
documentId: "a1b2c3d4e5f6g7h8i9j0klm",
name: "Restaurant Biscotte",
publishedAt: null,
locale: "en"
// …
}
パラメータで最初の 1 件を取得
findFirst() にパラメータを渡すと、条件に一致する最初のドキュメントを返します。
locale や status を省略すると、既定ロケールの下書き版が返ります。
await strapi.documents('api::restaurant.restaurant').findFirst(
{
filters: {
name: {
$startsWith: "Pizzeria"
}
}
}
)
{
documentId: "j9k8l7m6n5o4p3q2r1s0tuv",
name: "Pizzeria Arrivederci",
publishedAt: null,
locale: "en"
// …
}
findMany()
パラメータに一致するドキュメントを取得します。
構文: findMany(parameters: Params) => Document[]
パラメータ
| パラメータ | 説明 | 既定値 | 型 |
|---|---|---|---|
locale | 検索対象ドキュメントのロケール。 | 既定ロケール | 文字列または undefined |
status | コンテンツタイプで 下書きと公開 が有効な場合: 公開状態。次のいずれか。
| 'draft' | 'published' または 'draft' |
filters | 使う フィルター | null | Object |
fields | 返すフィールドを選択 | すべてのフィールド (既定でポピュレートされないものを除く) | Object |
populate | 追加フィールドを ポピュレート する。 | null | Object |
pagination | 結果を ページネーション する | ||
sort | 結果を ソート する |