如何使用 NestJS 序列化返回 id 字符串而不是 _bsontype
Posted
技术标签:
【中文标题】如何使用 NestJS 序列化返回 id 字符串而不是 _bsontype【英文标题】:How do I return an id string instead of a _bsontype with NestJS Serialization 【发布时间】:2019-07-13 15:53:33 【问题描述】:使用时
@UseInterceptors(ClassSerializerInterceptor)
就像文档here中解释的那样
我得到了想要的过滤结果,但是在使用 mongodb 时,id 被格式化为_bsontype
,而不是像以前那样没有拦截器的普通string
:
"id":
"_bsontype": "ObjectID",
"id":
"0": 92,
"1": 108,
"2": 182,
"3": 85,
"4": 185,
"5": 20,
"6": 221,
"7": 12,
"8": 56,
"9": 66,
"10": 131,
"11": 172
,
"createdAt": "2019-02-20T02:07:17.895Z",
"updatedAt": "2019-02-20T02:07:17.895Z",
"firstName": "The First Name",
"lastName": "The Last Name",
"email": "giberish@gmail.com"
如何将它转换回像这样的普通 id 字符串?
"id": "5c6cb655b914dd0c384283ac",
"createdAt": "2019-02-20T02:07:17.895Z",
"updatedAt": "2019-02-20T02:07:17.895Z",
"firstName": "The First Name",
"lastName": "The Last Name",
"email": "giberish@gmail.com"
"password": "okthen"
【问题讨论】:
直接将链接中的相关重现步骤提升到您的问题中可能会有所帮助。 【参考方案1】:您可以使用 class-transformer 的 @Transform()
和选项 toPlainOnly
:
import Transform from 'class-transformer';
@Entity()
export class User
@ObjectIdColumn()
@Transform((value) => value.toString(), toPlainOnly: true )
_id: ObjectID;
ClassSerializerInterceptor
内部使用类转换器的classToPlain()
方法。
【讨论】:
以上是关于如何使用 NestJS 序列化返回 id 字符串而不是 _bsontype的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 nestjs/swagger 更改查询参数序列化?
NestJS - 控制器 - Get(':id') 返回 404
NestJS + Mongoose:如何测试 document(data).save()?
您可以在 Angular / NestJS 模块提供程序中使用 `useFactory` 属性并返回一个类而不是实例吗?