Итак, происходит самое странное, и я не могу этого понять. Я делаю простой запрос с включением с ассоциацией hasMany
. Он работает отлично, все возвращается так, как должно, но когда я пытаюсь запустить элементы связанного поля через класс dto, он кричит мне в ответ: [Nest] 56169 - 06/16/2020, 7:05:38 PM [ExceptionsHandler] Cannot read property 'name' of undefined
.
Я подумал "странно", попытался console.log имя, и я получил "test" прямо перед тем, как выдать ошибку. Я console.log весь объект, все есть. Я отправляю ответ, не пропуская его через класс dto, и ошибки нет, однако я не хочу отправлять все, поэтому dto. Он работает с обычной функцией, а не с классом, которого будет достаточно, но мне очень любопытно, почему это может быть. Вот пример кода:
Модель:
export class Entity extends Model<Entity> {
@HasMany(() => OtherEntity)
otherEntities: OtherEntity[];
}
Код:
/* service */
class NestService(){
constructor(...injectStuff...){}
async findOne(someId){
const res = await this.Model.findByPk(
someId,
{
include: [OtherEntity]
}
);
return new DTO(res)
}
}
/* dto 1 */
class DTO {
otherEnitities: OtherEntity[];
constructor(object: SomethingElse){
this.otherEntities = object.otherEntities.map((otherEntity: OtherEntity) => new OtherEntityDto(otherEntity));
}
/* dto 2 */
class OtherEntityDto {
id: number;
name: string;
constructor(otherEntity: OtherEntity ) {
console.log(otherEntity.name); // "test"
this.id = otherEntity.id;
this.name = otherEntity.name; // Cannot read property 'name' of undefined
}
}