Как правильно сериализовать данные из mongo?

Есть сервис который сохраняет в монгу user

create(createUserDto: UserCreateDto): Promise<User> {
const userCreated = new this.userModel(createUserDto);

return userCreated.save();
}

после чего возвращает то, что сохранил. Вот я это логирую, все ок:

{
  image: 'test6',
  bio: 'test6',
  lastname: 'test6',
  _id: 5f5db0b24167bf636c370798,
  name: 'test6',
  email: '[email protected]',
  password: '$2b$10$K3YLR3GxYUofLBXWrSV96O40eGE7ERak3OnFU6T.Tpl1djEp3qEB2'
}

Я хочу сериализировать юзера, что бы не бы пароля не было в этом объекте, делаю вот так:

const { password, ...userCreatedSerialized } = userCreated;

и возвращаю уже userCreatedSerialized. Но, в userCreatedSerialized уже огромный объект

{
  '$__': InternalCache {
    strictMode: true,
    selected: undefined,
    shardval: undefined,
    saveError: undefined,
    validationError: undefined,
    adhocPaths: undefined,
    removing: undefined,
    inserting: undefined,
    saving: undefined,
    version: undefined,
    getters: {},
    _id: 5f5db16bc352c652acdf4138,
    populate: undefined,
    populated: undefined,
    wasPopulated: false,
    scope: undefined,
    activePaths: StateMachine {
      paths: [Object],
      states: [Object],
      stateNames: [Array]
    },
    pathsToScopes: {},
    cachedRequired: {},
    session: null,
    '$setCalled': Set { 'name', 'lastname', 'email', 'bio', 'image', 'password' },
    ownerDocument: undefined,
    fullPath: undefined,
    emitter: EventEmitter {
      _events: [Object: null prototype] {},
      _eventsCount: 0,
      _maxListeners: 0,
      [Symbol(kCapture)]: false
    },
    '$options': { defaults: true }
  },
  isNew: true,
  errors: undefined,
  '$locals': {},
  '$op': null,
  _doc: {
    image: 'test6',
    bio: 'test6',
    lastname: 'test6',
    _id: 5f5db16bc352c652acdf4138,
    name: 'test6',
    email: '[email protected]',
    password: '$2b$10$UiuihpGO0V0n7/730wB5q.5VfuqUGNcAjPLdTrwuKeNrx6VAbm/0u'
  }
}

В котором есть и вложенный объект _doc, который и есть мой юзер. Я не пойму почему после рест операции у меня объект совершенно другой....откуда там берутся все эти поля? Если исходный объект, который я деструктурирую выглядит совершенно иначе.... И как правильно делать сериализацию в таком случае? Ну то есть я могу сделать как-то так

{ _doc: { password, ...userSerialized } } = userCreated;

Хотя typescript мне не позволяет сделать такое...потому что в модели User нет никакого поля _doc И все же откуда берется тьма этих полей после реста, ведь их нет в логе userCreated


Ответы (0 шт):