# 查询引擎 API

Strapi 提供了一个查询引擎 API,用于在较低级别与数据库层进行交互。它应该主要由插件开发人员和向其应用程序添加自定义业务逻辑的开发人员使用。在大多数用例中,建议改用 Entity Service API

🤓 实体服务 API vs. 查询引擎 API

Strapi v4 提供了多个层来与后端交互并构建查询:

  • 实体服务 API 是推荐用于与应用程序数据库交互的 API。实体服务是处理 Strapi 的复杂数据结构(如组件和动态区域)的层,而较低级别的层并不知道这些结构。
  • 查询引擎 API 在较低级别与数据库层交互,并在后台用于执行数据库查询。它提供对数据库层的无限制内部访问,但仅当实体服务 API 未涵盖您的用例时才应使用。
  • 如果您需要直接访问 knex 功能,请使用 strapi.db.connection

# 基本用法

查询引擎可通过 strapi.db.query 获得:

strapi.db.query('api::blog.article').findMany({ // uid syntax: 'api::api-name.content-type-name'
  where: {
    title: {
      $startsWith: '2021',
      $endsWith: 'v4',
    },
  },
  populate: {
    category: true,
  },
});

# 可用操作

查询引擎允许对数据库条目执行操作,例如: