AutoMapper TS автоматически сопоставляет свойство с тем же именем - PullRequest
0 голосов
/ 27 сентября 2018

Я использую automapper-ts (1.9.0) для отображения DTO и сущностей в моем бэкэнде NodeJ.Я не понимаю, почему свойства с тем же именем не отображаются.

Например.У меня PostEntity определяется следующим образом:

@Entity('Posts')
export class PostEntity extends BaseEntity {

    @Column({ type: 'varchar' })
    Src: string;

    @Column({ type: 'varchar', length: 140, nullable: true })
    Caption?: string;

    @ManyToOne(type => UserEntity, user => user.Photos)
    @JoinColumn({ name: 'UserId' })
    User: UserEntity;
}

Чем PostDto определен как:

export class CreatePostDto {
    @ApiModelProperty()
    Base64Source: string;

    @ApiModelProperty()
    UserId: number;

    @ApiModelProperty()
    Caption?: string;
}

Я создал следующую карту для преобразования из DTO в Entity

config
    .createMap(CreatePostDto.name, PostEntity.name)
    .forMember('User.Id', (opts: AutoMapperJs.IMemberConfigurationOptions) => opts.mapFrom('UserId'))
    .ignoreAllNonExisting();

Я ожидаю, что преобразование DTO в сущность

const postEntity: PostEntity = await this.map<PostEntity>(post, CreatePostDto.name, PostEntity.name);

приведет к чему-то вроде этого:

postEntity: {
    User : { id : DtoUserId },
    Caption: "DtoCaption"
}

Однако свойство Caption - даже еслиодно и то же имя в Dto и Entity - не копируется.IgnoreAllNonExisting() мешает?Что может быть причиной этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...