Typeorm изменяет значение, переданное в метод создания, каков наилучший способ избежать этого?

#typescript #nestjs #typeorm

Вопрос:

Из приведенного ниже кода видно, что TypeORM изменяет значение, переданное в метод создания (код ниже). Каким было бы лучшее/наиболее эффективное решение для передачи значения в метод создания без его изменения? Является ли JSON stringify, а затем анализ JSON, или это слишком дорогостоящая операция?

Такое поведение никогда раньше не было проблемой, но оно возникло, когда я тестировал компонент. Я написал тест, ожидая, что createUserDto не будет соответствовать возвращаемой сущности пользователя, но тест не удался, так как они одинаковы.

 async createUser(createUserDto: CreateUserDto) => {
    console.log(createUserDto) // { email: 'joe', password: '123456' }
    const user = await userRepository.create(createUserDto)
    const salt = ....
    const hash = ....
    user.password = hash
    console.log(createUserDto) // { email: 'joe', password: 'hashed pw' }
    console.log(user) // { email: 'joe', password: 'hashed pw' }
    Object.is(createUserDto, user) // true
    return await userRepository.save(user)
}
 

Комментарии:

1. передача Object.assign({}, createUserDto) должна быть исправлена в этом случае, потому что в ней нет вложенного объекта createUserDto . Я думаю, вам придется написать «глубокую» версию Object.assign , если вы не хотите использовать какую-либо библиотеку