修改trapi中的响应对象

时间:2019-02-23 09:08:20

标签: javascript node.js strapi

我想获得一个修改后的响应对象。例如,我不知道如何在没有角色的情况下获取用户对象。

默认响应为:

{
    "id": 6,
    "username": "username",
    "email": "user@email.com",
    "provider": "local",
    "confirmed": true,
    "blocked": false,
    "role": {
        "id": 2,
        "name": "Authenticated",
        "description": "Default role given to authenticated user.",
        "type": "authenticated"
    }
}

现在,我希望在没有角色属性的情况下获得相同的响应。

{
    "id": 6,
    "username": "username",
    "email": "user@email.com",
    "provider": "local",
    "confirmed": true,
    "blocked": false
}

2 个答案:

答案 0 :(得分:1)

当前,除非更改权限插件提供的UserController,否则您不能在Rest API中执行此操作,

然后您可以做的是使用Strapi提供的GraphQL插件,这样您就只能在客户端查询所需的字段。

有关如何使用GraphQL插件的文档为here

答案 1 :(得分:1)

对于仍在努力解决此问题的任何人:

stradi的最新版本确实支持自定义查询,您可以传递包含要填充的所有关系名称的数组(仅关系!)。

如果您不想填充任何关系,可以将其保留为空,然后控制器将如下所示:

module.exports = {    
UserWithoutRoles: ctx => {
      return strapi.query('user').findOne({ id: ctx.params.id }, ['']);
    }
}

如果您希望填充它,它将像这样:

module.exports = {    
UserWithoutRoles: ctx => {
      return strapi.query('user').findOne({ id: ctx.params.id }, ['role']);
    }
}

另请参阅: [https://strapi.io/documentation/3.0.0-beta.x/concepts/queries.html#api-reference][1]