如何根据 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]);

以上是或查找