# 实体服务 API
Strapi 提供了一个实体服务 API,构建在 Query Engine API 之上。实体服务是处理 Strapi 的复杂数据结构(如 components 和 dynamic zones 的层,并在后台使用查询引擎 API 来执行数据库查询。
🤓 实体服务 API vs. 查询引擎 API
Strapi v4 提供了多个层来与后端交互并构建查询:
- 实体服务 API 是推荐用于与应用程序数据库交互的 API。实体服务是处理 Strapi 的复杂数据结构(如组件和动态区域)的层,而较低级别的层并不知道这些结构。
- 查询引擎 API 在较低级别与数据库层交互,并在后台用于执行数据库查询。它提供对数据库层的无限制内部访问,但仅当实体服务 API 未涵盖您的用例时才应使用。
- 如果您需要直接访问
knex
功能,请使用strapi.db.connection
。
# 基本用法
实体服务 可通过 strapi.entityService
获得:
const entry = await strapi.entityService.findOne('api::article.article', 1, {
populate: { someRelation: true },
});
# 可用操作
实体服务 API 允许:
- entities 的 CRUD 操作 (例如:
findOne
,findMany
,create
,update
,delete
) 具有 filter, order and paginate results, 和 populate relations, components and dynamic zones - the creation and update of components and dynamic zones