首页 > 解决方案 > Strapi 不包括响应中的关系数据

问题描述

我在多个表之间创建了一个关系,例如

因此,当从垂直休息 API 发送请求时,它没有技术和团队响应。所有这些数据都包含在用户表的响应中,但我希望这些数据也都包含在单个表中。

所以我错过了什么?如果没有,那么我该如何添加这些作为回应?

标签: strapi

解决方案


好吧,让我解释一下您创建的关系:

您已链接

Vertical => Users
Tech     => Users
Team     => Users

从上面可以清楚地看出,您已将所有关系链接到用户集合。因此strapi将向其他关系集合添加一个idinusers集合。

因此,当您执行find以下操作时,书架默认情况下会尝试根据集合中id存储的内容获取和填充所有关系。users

// 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中的自定义查询以获取更多信息。

推荐阅读