关于类变压器和路由控制器的用法。也许是我不了解class-transformer lib的真正含义,但是我想用它来转换从服务器(第三方)接收到的对象的接收,并将它们改编成我自己的模型,并使用不同的名称。理论上哪个应该起作用,并且在console.log-记录新的转换模型时,甚至当JSON.stringify-模型时,都可以。但是由于某些原因,使用路由控制器输出模型时,它只会输出相同的原始对象。
用户类别:
class User {
@Expose({ name: 'uid' }) // To convert/rename the "uid" property received from the server
id: string
firstName: string
lastName: string
}
users-controller.ts:
@JsonController('/users')
export class UsersController {
@Get('/')
async get() {
const user = plainToClass(User, {
uid: '123',
firstName: 'Matthew',
lastName: 'Michalsky'
})
console.log(user)
return user
}
}
控制台输出期望值:
User {
id: '123',
firstName: 'Matthew',
lastName: 'Michalsky'
}
但是来自UsersController的响应(通过routing-controllers lib)是:
{
uid: '123',
firstName: 'Matthew',
lastName: 'Michalsky'
}
您看到我可能会想念/做错了什么吗?谢谢。
对。响应会发送回json数据,因此我们无法使用该数据传输类名。因此,如果从控制器返回类实例,则routing-controllers
在其上应用classToPlain
并获得转换后的普通对象。
如果要跳过此行为,则应配置@ResponseClassTransformOption
。
@ResponseClassTransformOption({
ignoreDecorators: true,
})
@Get('/')
async get() {