我想序列化一个属性,它的名称与实体中的名称不同。
@Entity()
export class MyEntity {
// This should be serialized with name_column in JSON
@Column()
name: string
}
字符串
当我调用classToPlain
时,我希望属性name
被序列化为name_column
:
classToPlain(myEntity)
// returns: {name: 'my name'}
// should be: {name_column: 'my name'}
型
2条答案
按热度按时间zbdgwd5y1#
你使用
json-typescript-mapper
而不是nest.js原生支持的class-transformer
有什么特殊原因吗?使用
class-transformer
,您可以使用@Expose
更改列的名称:字符串
对于序列化,您可以使用
@UseInterceptors(ClassSerializerInterceptor)
注解您的控制器类或单个方法。使用注解,它将自动序列化所有实体,您从控制器方法返回。您可以在this thread中阅读有关此的更多信息。46qrfjad2#
只有在模型实体上直接调用
classToPlain
时,前面的答案才有效。如果你有一个单独的DTO类,你将调用
plainToClass
,然后调用classToPlain
,这将导致它要么是空的,要么保持原来的名称。另一种可以用来更改名称的方法是公开一个getter函数:
字符串