Nest js sequelize-typescript не может прочитать свойство undefined, если оно существует - PullRequest
0 голосов
/ 16 июня 2020

Итак, происходит самое странное, и я не могу этого понять. Я делаю простой запрос с включением с ассоциацией 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
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...