Skip to main content
Unlisted page
This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

使用查询引擎 API 进行排序和分页

🌐 Ordering and Paginating with the Query Engine API

Caution

在大多数情况下,你不应该使用查询引擎 API,而应使用 文档服务 API

🌐 In most cases you should not use the Query Engine API and rather use the Document Service API.

仅当你确切知道自己在做什么时才使用查询引擎 API,例如,如果你想使用直接与数据库的唯一行交互的底层 API。

🌐 Only use the Query Engine API if you exactly know what you are doing, for instance if you want to use a lower-level API that directly interacts with unique rows of the database.

请记住,查询引擎 API 并不了解 Strapi 5 的最新功能,如草稿与发布、国际化、内容历史记录等,可能还有更多功能。这也意味着查询引擎 API 将无法使用 documentId,而将使用 id,这可能会在数据库层面导致未预料的后果,或者与 Strapi 5 功能存在部分或不完全兼容的情况。

🌐 Please keep in mind that the Query Engine API is not aware of the most advanced Strapi 5 features like Draft & Publish, Internationalization, Content History, and possibly more. This also means that the Query Engine API will not be able to use documentId and will use id, which means it could lead to unattended consequences at the database level or partial or incomplete compatibility with Strapi 5 features.

Prerequisites

在深入了解查询引擎 API 文档之前,建议你阅读以下介绍:

🌐 Before diving deeper into the Query Engine API documentation, it is recommended that you read the following introductions:

查询引擎 API 提供了排序分页结果的功能。

🌐 The Query Engine API offers the ability to order and paginate results.

排序

🌐 Ordering

要对查询引擎返回的结果进行排序,请使用 orderBy 参数。结果可以基于单个多个属性进行排序,也可以使用关系排序

🌐 To order results returned by the Query Engine, use the orderBy parameter. Results can be ordered based on a single or on multiple attributes and can also use relational ordering.

单身

🌐 Single

strapi.db.query('api::article.article').findMany({
orderBy: 'id',
});

// single with direction
strapi.db.query('api::article.article').findMany({
orderBy: { id: 'asc' },
});

多个

🌐 Multiple

strapi.db.query('api::article.article').findMany({
orderBy: ['id', 'name'],
});

// multiple with direction
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 返回的结果进行分页,请使用 offsetlimit 参数:

🌐 To paginate results returned by the Query Engine API, use the offset and limit parameters:

strapi.db.query('api::article.article').findMany({
offset: 15,
limit: 10,
});