Я использую 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()
мешает?Что может быть причиной этого?