Skip to main content

使用查询引擎的单一操作 API

¥Single Operations with the Query Engine API

提醒

在大多数情况下,你不应使用查询引擎 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 功能,如草稿和发布、国际化、内容历史记录等。

¥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.

findOne()

✏️ 注意

仅当 文档服务的 findOne() 方法无法覆盖你的用例时才使用查询引擎的 findOne() 方法。

¥Only use the Query Engine's findOne() method if the Document Service's findOne() method can't cover your use case.

查找与参数匹配的第一个条目。

¥Finds the first entry matching the parameters.

语法:findOne(parameters) ⇒ Entry

¥Syntax: findOne(parameters) ⇒ Entry

参数

¥Parameters

范围类型描述
select字符串或字符串数组属性 返回
whereWhereParameter使用 过滤器
offset整数要跳过的条目数
orderByOrderByParameter命令 定义
populatePopulateParameterpopulate 的关系

示例

¥Example



const entry = await strapi.db.query('api::blog.article').findOne({


select: ['title', 'description'],
where: { title: 'Hello World' },
populate: { category: true },
});

findMany()

✏️ 注意

仅当 文档服务 findMany() 方法无法覆盖你的用例时才使用查询引擎的 findMany() 方法。

¥Only use the Query Engine's findMany() method if the Document Service findMany() method can't cover your use case.

查找与参数匹配的条目。

¥Finds entries matching the parameters.

语法:findMany(parameters) ⇒ Entry[]

¥Syntax: findMany(parameters) ⇒ Entry[]

参数

¥Parameters

范围类型描述
select字符串或字符串数组属性 返回
whereWhereParameter使用 过滤器
limit整数要返回的条目数
offset整数要跳过的条目数
orderByOrderByParameter命令 定义
populatePopulateParameterpopulate 的关系

示例

¥Example



const entries = await strapi.db.query('api::blog.article').findMany({


select: ['title', 'description'],
where: { title: 'Hello World' },
orderBy: { publishedAt: 'DESC' },
populate: { category: true },
});

findWithCount()

查找与参数匹配的条目并对其进行计数。

¥Finds and counts entries matching the parameters.

语法:findWithCount(parameters) => [Entry[], number]

¥Syntax: findWithCount(parameters) => [Entry[], number]

参数

¥Parameters

范围类型描述
select字符串或字符串数组属性 返回
whereWhereParameter使用 过滤器
limit整数要返回的条目数
offset整数要跳过的条目数
orderByOrderByParameter命令 定义
populatePopulateParameterpopulate 的关系

示例

¥Example

const [entries, count] = await strapi.db.query('api::blog.article').findWithCount({
select: ['title', 'description'],
where: { title: 'Hello World' },
orderBy: { title: 'DESC' },
populate: { category: true },
});

create()

✏️ 注意

仅当 文档服务 create() 方法 无法覆盖你的用例时才使用查询引擎的 create() 方法。

¥Only use the Query Engine's create() method if the Document Service create() method can't cover your use case.

创建一个条目并返回它。

¥Creates one entry and returns it.

语法:create(parameters) => Entry

¥Syntax: create(parameters) => Entry

参数

¥Parameters

范围类型描述
select字符串或字符串数组属性 返回
populatePopulateParameterpopulate 的关系
data目的输入数据

示例

¥Example



const entry = await strapi.db.query('api::blog.article').create({


data: {
title: 'My Article',
},
});
💡 提示

data 对象中,可以使用 REST API 描述的语法通过 connectdisconnectset 参数来管理关系(请参阅 管理关系)。

¥In the data object, relations can be managed with the connect, disconnect, and set parameters using the syntax described for the REST API (see managing relations).

update()

✏️ 注意

仅当 文档服务 update() 方法无法覆盖你的用例时才使用查询引擎的 update() 方法。

¥Only use the Query Engine's update() method if the Document Service update() method can't cover your use case.

更新一项并返回它。

¥Updates one entry and returns it.

语法:update(parameters) => Entry

¥Syntax: update(parameters) => Entry

参数

¥Parameters

范围类型描述
select字符串或字符串数组属性 返回
populatePopulateParameterpopulate 的关系
whereWhereParameter使用 过滤器
data目的输入数据

示例

¥Example



const entry = await strapi.db.query('api::blog.article').update({


where: { id: 1 },
data: {
title: 'xxx',
},
});
💡 提示

data 对象中,可以使用 REST API 描述的语法通过 connectdisconnectset 参数来管理关系(请参阅 管理关系)。

¥In the data object, relations can be managed with the connect, disconnect, and set parameters using the syntax described for the REST API (see managing relations).

delete()

✏️ 注意

仅当 文档服务 delete() 方法无法覆盖你的用例时才使用查询引擎的 delete() 方法。

¥Only use the Query Engine's delete() method if the Document Service delete() method can't cover your use case.

删除一项并将其返回。

¥Deletes one entry and returns it.

语法:delete(parameters) => Entry

¥Syntax: delete(parameters) => Entry

参数

¥Parameters

范围类型描述
select字符串或字符串数组属性 返回
populatePopulateParameterpopulate 的关系
whereWhereParameter使用 过滤器

示例

¥Example



const entry = await strapi.db.query('api::blog.article').delete({


where: { id: 1 },
});