Я получаю данные из монги через
nestjs. Допустим хочу получить всех пользователей Вот контролле, который обрабатывает эндпоинт
@Get('/getAll')
async getAll() {
return this.userService.getAll();
}
Вот сервис который получает данные из монги с помощью монгуса
async getAll(): Promise<User[]> {
try {
return await this.userModel.find().exec();
} catch (error) {
throw new BadRequestException('Users not found');
}
}
Вот объект одного пользователя в ответе:
{
"lastname": "Gabbana",
"_id": "5f782ace2cdfcd297c373ba6",
"name": "Dolce",
"password": "$2b$10$DSomsGAk4FuXUH6Knnmdz.9L2DWlFTfH.VOIM8VKYlDroOwKeh7kW",
"__v": 0
}
Все работает как нужно. Но я хочу сделать сериализацию данных. В документации nestjs рекомендуют использовать декоратор
@UseInterceptors(ClassSerializerInterceptor) для контроллера. А в модели нужно над полем которое нужно исключать при сериализации нужно применить декоратор
@Exclude()
То есть вот так:
@Schema()
export class User extends Document {
@Prop()
name: string;
@Prop({ default: '' })
lastname: string;
@Exclude()
@Prop()
password: string;
}
export const UserSchema = SchemaFactory.createForClass(User);
Но проблема в том, что теперь я получаю очень большой объект по каждому пользователю, в котором масса ненужной мне информации и при этом при всем, поле пароля не исключено из ответа, то есть и сериализация не прошла и ответ получается не тем.
{
"$__": {
"strictMode": true,
"selected": {},
"getters": {},
"_id": {
"_bsontype": "ObjectID",
"id": {
"type": "Buffer",
"data": [
95,
120,
42,
206,
44,
223,
205,
41,
124,
55,
59,
166
]
}
},
"wasPopulated": false,
"activePaths": {
"paths": {
"role": "init",
"registerAt": "init",
"status": "init",
"lastname": "init",
"_id": "init",
"name": "init",
"email": "init",
"phone": "init",
"password": "init",
"__v": "init"
},
"states": {
"ignore": {},
"default": {},
"init": {
"_id": true,
"role": true,
"registerAt": true,
"status": true,
"lastname": true,
"name": true,
"email": true,
"phone": true,
"password": true,
"__v": true
},
"modify": {},
"require": {}
},
"stateNames": [
"require",
"modify",
"init",
"default",
"ignore"
]
},
"pathsToScopes": {},
"cachedRequired": {},
"session": null,
"$setCalled": [],
"emitter": {
"_events": {},
"_eventsCount": 0,
"_maxListeners": 0
},
"$options": {
"skipId": true,
"isNew": false,
"willInit": true,
"defaults": true
}
},
"isNew": false,
"$locals": {},
"$op": null,
"_doc": {
"lastname": "Gabbana",
"_id": {
"_bsontype": "ObjectID",
"id": {
"type": "Buffer",
"data": [
95,
120,
42,
206,
44,
223,
205,
41,
124,
55,
59,
166
]
}
},
"name": "Dolce",
"password": "$2b$10$DSomsGAk4FuXUH6Knnmdz.9L2DWlFTfH.VOIM8VKYlDroOwKeh7kW",
"__v": 0
},
"$init": true
}
Вот такой объект приходит для каждого юзера. В документации такого не происходит и в гугле я такого не нашел, везде приходит нормальный ответ. Подскажите пожалуйста, что я делаю не так?