Javascript 在strapi中修改响应对象
我想得到一个修改后的响应对象。例如,如果没有角色,我不知道如何获取用户对象 默认响应为:Javascript 在strapi中修改响应对象,javascript,node.js,strapi,Javascript,Node.js,Strapi,我想得到一个修改后的响应对象。例如,如果没有角色,我不知道如何获取用户对象 默认响应为: { "id": 6, "username": "username", "email": "user@email.com", "provider": "local", "confirmed": true, "blocked": false, "role": { "id": 2, "name": "Authenticated
{
"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"
}
}
现在,我希望得到相同的响应,而不使用role属性
{
"id": 6,
"username": "username",
"email": "user@email.com",
"provider": "local",
"confirmed": true,
"blocked": false
}
目前,除非更改权限插件提供的UserController,否则无法在RESTAPI中执行此操作,这是不推荐的 然后,您可以使用Strapi提供的GraphQL插件,这样您就可以只查询客户端所需的字段
关于如何使用GraphQL插件的文档如下。对于仍在努力解决此问题的人: strapi的最新版本确实支持自定义查询,您可以传递一个数组,其中包含要填充的关系的所有名称(仅关系!) 如果您不想填充任何关系,可以将其保持为空,那么控制器将如下所示:
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']);
}
}
如果您确实希望填充它,它将如下所示:
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']);
}
}
另见:
[有没有办法将自定义对象作为响应返回?例如,我不想从查询返回经过清理的对象,而是想返回一个包含该响应和其他属性的对象。如果我
返回{I:obj,j:obj}
I get a unauthorized Error默认情况下限制对新自定义路由的访问。您是否尝试对这些路由启用权限?这可以通过编程方式完成(请参阅),也可以在“角色和权限”下的“管理”面板中完成