使用查询引擎 API 进行排序与分页
页面摘要: 查询引擎 API 支持通过
orderBy参数按单个或多个属性(包括关联排序)对结果排序,并通过offset与limit参数进行分页。
WARNING
大多数情况下你不应使用 Query Engine API,而应使用 Document Service API。
只有当你能确定自己在做什么时才使用 Query Engine API,例如需要直接与数据库唯一行交互的底层 API。
请注意,Query Engine API 无法感知 Strapi 5 的高级功能,如草稿与发布、国际化、内容历史等。这也意味着 Query Engine API 无法使用 documentId,而会使用 id,这可能导致数据库层面的意外后果,或与 Strapi 5 功能出现部分或不完整的兼容性问题。
WARNING
在深入阅读 Query Engine API 文档之前,建议你先阅读以下介绍:
- 后端自定义介绍,
- 以及 Content APIs 介绍。
查询引擎 API 提供了对结果进行 排序 与 分页 的能力。
排序(Ordering)
要对查询引擎返回的结果排序,请使用 orderBy 参数。结果可按 单个 或 多个 属性排序,也可使用 关联排序。
单个字段(Single)
strapi.db.query('api::article.article').findMany({
orderBy: 'id',
});
// 带方向的单个字段排序
strapi.db.query('api::article.article').findMany({
orderBy: { id: 'asc' },
});
多个字段(Multiple)
strapi.db.query('api::article.article').findMany({
orderBy: ['id', 'name'],
});
// 带方向的多个字段排序
strapi.db.query('api::article.article').findMany({
orderBy: [{ title: 'asc' }, { publishedAt: 'desc' }],
});
关联排序(Relational ordering)
strapi.db.query('api::article.article').findMany({
orderBy: {
author: {
name: 'asc',
},
},
});
分页(Pagination)
要对查询引擎 API 返回的结果进行分页,请使用 offset 与 limit 参数:
strapi.db.query('api::article.article').findMany({
offset: 15,
limit: 10,
});