Nano Hash - криптовалюты, майнинг, программирование

Dto к объекту и dto от объекта

В моем приложении мне нужна многократная карта от Entity (модель базы данных) до DTO (локальный объект)

В большинстве случаев D имеет те же имена, что и сущность.

Например, Сущность

export class CompanyModel extends BaseEntity {
  constructor(init?: Partial<CompanyModel>) {
  }
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column({ length: 500 })
  name: string;

  @Column({ length: 500, unique: true })
  email: string;




  ....

}

DTO

export class Company {
  @ApiProperty()
  id: string;


  @ApiProperty()
  email: string;

  @ApiProperty()
  name: string;
...
}

Теперь я добавляю статическую функцию toModel и fromModel

  static toModel(companyDto :CreateCompanyDto ) : CompanyModel {
    const companyModel =  new CompanyModel();

    const {name, email,..... } = companyDto;
    companyModel.name = name;
    companyModel.email =email
   
.....
    return companyModel;
}

Какое лучшее решение для сопоставления DTO с ENTITY в nestjs/node

19.03.2021

Ответы:


1

Ну, это зависит от того, какие еще вещи вы планируете с вашими dtos. В моем приложении я выполняю много предварительной или последующей обработки своих dto-s. Вот пример, где я хочу ограничить формат свойства электронной почты:

export class Company {
  @ApiProperty()
  id: string;

  @ApiProperty()
  @Transform(value => value.toLowerCase())
  email: string;

  @ApiProperty()
  name: string;
...
}

Если вы планируете использовать эти преобразования, я предлагаю использовать трансформатор класса: classToPlain, plainToClass методы, поэтому вы можете безопасно и эффективно преобразовывать свои данные из объекта dto в экземпляр сущности. Вы даже можете поместить разные преобразования в оба ваших класса.

static toModel(companyDto: CreateCompanyDto ): CompanyModel {
  const data = classToPlain(companyDto);
  return plainToClass(CompanyModel, data);
}

Вы можете найти больше информации по ссылке, которую я упомянул выше. Это может даже помочь вам, как управлять свойствами на ваших dtos или как изменить их поведение на основе различных вариантов использования.

19.03.2021
  • Если мой объект имеет 3 свойства {a,b,c}, а мой dto содержит 2 свойства {a,b}, и я написал {const data = classToPlain(entity); возвратить plainToClass (Dto, данные); Я получил все 3 свойства {a,b,c}, так как же это работает? Благодарность 21.03.2021
  • Вы должны явно показывать свойства и пропускать свойства, не внесенные в белый список. Вы можете прочитать больше здесь: github.com/typestack/ 22.03.2021
  • Использование plainToClass — лучшее решение для использования в NestJS @24sharon. 22.03.2021

  • 2

    как насчет AutoMapper? Я использую эту библиотеку для сопоставления объекта с DTO, но и обратное тоже должно работать.

    19.03.2021
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..