@alexeyinn

Nest Postgresql Sequelize one-to-one ошибка ForeignKey?

Моя таблица:

@Table({ tableName: "siCheckingInfo", createdAt: false, updatedAt: false })
export class SiChecking extends Model<SiChecking, CheckingAttrs> {
  @Column({
    type: DataType.INTEGER,
    unique: true,
    autoIncrement: true,
    primaryKey: true,
  })
  pageId: number;

  @Column({ type: DataType.STRING, allowNull: false })
  manufactureNum: string;

  *...some columns...*

  @Column({ type: DataType.STRING, allowNull: true })
  checkingType: string;

  @ForeignKey(() => CheckingDocs)
  @Column({ type: DataType.INTEGER })
  checkingDocsId: number;

  @BelongsTo(() => CheckingDocs)
  doc: CheckingDocs;

  @ForeignKey(() => SiType)
  @Column({ type: DataType.INTEGER })
  siTypeId: number;

  @BelongsTo(() => SiType)
  siType: SiType;

  **@ForeignKey(() => CheckingResults)
  @Column({ type: DataType.INTEGER })
  resultId: number;
  @HasOne(() => CheckingResults)
  results: CheckingResults;**
}


Связана с другой таблицей связью одно-к-одному, с другой таблицей

@Table({ tableName: "checkingResults", createdAt: false, updatedAt: false })
export class CheckingResults extends Model<
  CheckingResults,
  CheckingResultsAttrs
> {
  @ForeignKey(() => SiChecking)
  @Column({
    type: DataType.INTEGER,
    unique: true,
    autoIncrement: true,
    primaryKey: true,
  })
  resultId: number;

  @Column({ type: DataType.BOOLEAN, unique: false, allowNull: false })
  isSuccessful: boolean;

*...some columns...*  

  @Column({ type: DataType.BOOLEAN, unique: false, allowNull: true })
  siIsSigned: boolean;

  @BelongsTo(() => SiChecking)
  SiChecking: SiChecking;
}


Но когда я пытаюсь добавить что то во вторую тыблицу, то получаю ошибку - Nest error insert or update в таблице "checkingResults" нарушает foreign key значения "checkingResults_resultId_fkey"

Все перепробовал, но так и не смог решить проблему.
И как мне кажется, ранее этой ошибки не было. Данные куски кода не трогал, ошибка просто появилась сама собой.
  • Вопрос задан
  • 212 просмотров
Решения вопроса 1
@alexeyinn Автор вопроса
Вопрос решен:

Надо было поменять местами в таблицах @HasOne and @BelongsTo

Но возникла небольшая другая проблема (или так и должно быть):

Если в pgAdmin построить ERD схему таблиц, то на изображении видно, что таблицы имеют связь - один-ко-многим, но не один-к-одному. А что то не так сделал в моделях, или для ERD схемы сгенерированной это нормально?62387f401fb70631121964.png
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы