如何根据 Strapi 中的关系查询模型
How to Query a Model based on its Relation in Strapi
希望你们今天过得愉快! :)
我已尝试 google 我的问题,但始终找不到有效的示例。
我有一个用于 项目 的模型。 Projects 与模型 Members 具有 1:n 关系。
如果我使用:
strapi.query('project').find({id: 1});
我得到:
{ id: 1, name: 'Project 1', members: [...]}
所以基本上我可以通过它的 ID 找到一个 Project 并且我得到它的 Members 列表.
但是我将如何获取属于 ID = 1 的项目的所有成员的列表?
strapi.query('member').find(...);
strapi.query('member').search(...);
我最接近的是使用:
strapi.query('member').search({_q: 'Project Name'});
但这还不够接近。这更像是一种解决方法。我真的很希望能够通过使用 Project 的 ID 以一种干净的方式完成此操作。任何人都可以帮助或指出我正确的方向吗?非常感谢任何例子!谢谢! :)
您可以在project/controller/project.js
中添加自定义控制器函数
getMembers: async ctx => {
const {id} = ctx.params;
const project = await strapi.services.project.findOne({id});
return project ? project.members : [];
}
确保公开路线。在project/config/routes.json
中添加以下内容
{
"method": "GET",
"path": "/projects/get-members/:id",
"handler": "project.getMembers",
"config": {
"policies": []
}
},
您还可以将“路径”属性更改为适合您需要的任何内容。
最好的方法是:
strapi.query('member').find({name:'','project.id':id});
以上是 AND 查找
strapi.query('member').find({name:''},['project.id',id]);
以上是或查找
希望你们今天过得愉快! :) 我已尝试 google 我的问题,但始终找不到有效的示例。
我有一个用于 项目 的模型。 Projects 与模型 Members 具有 1:n 关系。 如果我使用:
strapi.query('project').find({id: 1});
我得到:
{ id: 1, name: 'Project 1', members: [...]}
所以基本上我可以通过它的 ID 找到一个 Project 并且我得到它的 Members 列表.
但是我将如何获取属于 ID = 1 的项目的所有成员的列表?
strapi.query('member').find(...);
strapi.query('member').search(...);
我最接近的是使用:
strapi.query('member').search({_q: 'Project Name'});
但这还不够接近。这更像是一种解决方法。我真的很希望能够通过使用 Project 的 ID 以一种干净的方式完成此操作。任何人都可以帮助或指出我正确的方向吗?非常感谢任何例子!谢谢! :)
您可以在project/controller/project.js
中添加自定义控制器函数getMembers: async ctx => {
const {id} = ctx.params;
const project = await strapi.services.project.findOne({id});
return project ? project.members : [];
}
确保公开路线。在project/config/routes.json
中添加以下内容{
"method": "GET",
"path": "/projects/get-members/:id",
"handler": "project.getMembers",
"config": {
"policies": []
}
},
您还可以将“路径”属性更改为适合您需要的任何内容。
最好的方法是:
strapi.query('member').find({name:'','project.id':id});
以上是 AND 查找
strapi.query('member').find({name:''},['project.id',id]);
以上是或查找