使用实体服务 API 进行排序与分页

页面摘要: 使用 sort、start/limit 或 page/pageSize 参数,对实体服务 API 的查询结果进行排序与分页,从而控制结果顺序并获取特定的数据子集。

WARNING

Entity Service API 在 Strapi v5 中已弃用。请考虑改用 Document Service API。

实体服务 API 提供了对通过 findMany() 方法获取的结果进行排序(ordering)与分页(pagination)的能力。

排序(Ordering)

要对实体服务 API 返回的结果排序,请使用 sort 参数。结果可按 单个 或 多个 属性排序,也可使用 关联排序。

单个字段(Single)

要按单个字段对结果排序,可将字段以以下两种方式之一传入 sort 参数:

  • 作为 string,以默认升序排序;或
  • 作为 object,同时定义字段名与排序方向(即 'asc' 表示升序,'desc' 表示降序)
strapi.entityService.findMany('api::article.article', {
  sort: 'id',
});

// 带方向的单个字段排序
strapi.entityService.findMany('api::article.article', {
  sort: { id: 'desc' },
});

多个字段(Multiple)

要按多个字段排序,可将字段以数组形式以下列两种方式之一传入 sort 参数:

  • 作为字符串数组,以默认升序对多个字段排序;或
  • 作为对象数组,同时定义字段名与排序方向(即 'asc' 表示升序,'desc' 表示降序)
strapi.entityService.findMany('api::article.article', {
  sort: ['publishDate', 'name'],
});

// 带方向的多个字段排序
strapi.entityService.findMany('api::article.article', {
  sort: [{ title: 'asc' }, { publishedAt: 'desc' }],
});

关联排序(Relational ordering)

字段也可基于关联中的字段进行排序:

strapi.entityService.findMany('api::article.article', {
  sort: {
    author: {
      name: 'asc',
    },
  },
});

分页(Pagination)

要对实体服务 API 返回的结果进行分页,可使用 start 与 limit 参数:

strapi.entityService.findMany('api::article.article', {
  start: 10,
  limit: 15,
});

也可改用 page 与 pageSize 参数:

strapi.entityService.findMany('api::article.article', {
  page: 1,
  pageSize: 15,
});