我已经创建了多个表之间的关系,如
- vertical有很多用户
- 技术有很多用户
- 团队有很多用户
所以当从垂直rest API发送请求时,它没有技术和团队响应。所有这些数据都包含在响应用户表中,但我希望这些数据也都包含在单独的表中。
所以我在这遗漏了什么?如果没有,那么我如何添加这些响应?
让我来解释一下您创建的关系:
您已链接:
Vertical => Users
Tech => Users
Team => Users
从上面可以清楚地看出,您已将所有关系链接到users集合。因此,strapi
将把users
集合中的id
添加到其他关系集合中。
所以当你像下面这样做find
时,bookshelf将默认尝试获取&根据users
集合中存储的id
填充所有关系。
// this will fetch the related data also
await strapi.services.users.findOne({id: 1});
现在你对如何通过查询其他集合来获取链接数据有疑问,你需要在控制器中重写find方法,并使用strapi.query('vertical').model
编写一个手动查询来执行连接并自己获取链接数据。
const result = await strapi
.query('vertical')
.model.query(qb => {
qb.join('users', 'users.vertical_id', '=', 'vertical.id');
qb.join('tech', 'tech.id', '=', 'users.tech_id');
qb.join('teams_user_relation', 'teams_user_relation.user_id', '=', 'users.id');
qb.join('teams', 'teams.id', '=', 'teams_user_relation.team_id');
})
.fetch();
const fields = result.toJSON();
更多信息请参考strapi中的自定义查询。
我有点晚了,但我希望这能帮助别人
要返回关系,您必须在URL的末尾添加填充查询参数
下面是一个将关联用户填充到垂直视图的示例,如果您希望返回与垂直视图关联的所有关系,请将user替换为*
http://localhost:1337/api/verticals?populate=user