Я работаю над проектом по созданию API Ideas, чем-то вроде форума, на котором люди публикуют идеи, а другие могут комментировать, одобрять и понижать.
У меня проблема с моей БД и Я не знаю, как ее решить.
Ошибка: "update or delete on table \"idea\" violates foreign key constraint \"FK_861b419cce1c9ae64295300d6b6\" on table \"comment\"
Так что, как вы, ребята, можете видеть по ошибке, у меня есть таблица под названием "идея", куда я помещаю идеи и комментарии.
Но эта ошибка возникает, когда я пытаюсь удалить приложение Idea, к которому прикреплены комментарии.
Если я удаляю идею без комментариев, все происходит нормально.
Но если к этой идее прикреплен комментарий, эта ошибка появляется.
Я немного искал в Интернете, и некоторые люди говорили мне, чтобы я установил мои отношения @OneToMany (одна идея, много комментариев) {cascade: true}, но ничто не радует.
Я собираюсь опубликовать, как организованы мои сущности.
Просто чтобы уточнить, я использую Nest JS framework с PostgreSQL как реляционная БД
import {
Entity,
PrimaryGeneratedColumn,
CreateDateColumn,
Column,
ManyToOne,
JoinTable,
} from 'typeorm';
import { UserEntity } from 'src/user/user.entity';
import { IdeaEntity } from 'src/idea/idea.entity';
@Entity('comment')
export class CommentEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@CreateDateColumn()
created: Date;
@Column('text')
comment: string;
@ManyToOne(type => UserEntity)
@JoinTable()
author: UserEntity;
@ManyToOne(
type => IdeaEntity,
idea => idea.comments,
)
idea: IdeaEntity;
}
import {
Entity,
PrimaryGeneratedColumn,
CreateDateColumn,
Column,
ManyToOne,
UpdateDateColumn,
ManyToMany,
JoinTable,
OneToMany,
} from 'typeorm';
import { UserEntity } from 'src/user/user.entity';
import { CommentEntity } from 'src/comment/comment.entity';
@Entity('idea')
export class IdeaEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@CreateDateColumn()
created: Date;
@UpdateDateColumn()
updated: Date;
@Column('text')
idea: string;
@Column('text')
description: string;
@ManyToOne(
type => UserEntity,
author => author.ideas,
)
author: UserEntity;
@ManyToMany(type => UserEntity, { cascade: true })
@JoinTable()
upvotes: UserEntity[];
@ManyToMany(type => UserEntity, { cascade: true })
@JoinTable()
downvotes: UserEntity[];
@OneToMany(
type => CommentEntity,
comment => comment.idea,
{ cascade: true },
)
comments: CommentEntity[];
}
edit1: я поставил ловить все, чтобы узнать больше об этой ошибке, и это то, что мой терминал показывает
error: error: update or delete on table "idea" violates foreign key constraint "FK_861b419cce1c9ae64295300d6b6" on table "comment"
at Connection.parseE (/home/gabriel/Desktop/Token/ideas-api/node_modules/pg/lib/connection.js:614:13)
at Connection.parseMessage (/home/gabriel/Desktop/Token/ideas-api/node_modules/pg/lib/connection.js:413:19)
at Socket.<anonymous> (/home/gabriel/Desktop/Token/ideas-api/node_modules/pg/lib/connection.js:129:22)
at Socket.emit (events.js:315:20)
at addChunk (_stream_readable.js:297:12)
at readableAddChunk (_stream_readable.js:273:9)
at Socket.Readable.push (_stream_readable.js:214:10)
at TCP.onStreamRead (internal/stream_base_commons.js:186:23) {
name: 'error',
length: 325,
severity: 'ERROR',
code: '23503',
detail: 'Key (id)=(9452b702-e7e8-4585-adf7-ee84d16306cb) is still referenced from table "comment".',
hint: undefined,
position: undefined,
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: 'public',
table: 'comment',
column: undefined,
dataType: undefined,
constraint: 'FK_861b419cce1c9ae64295300d6b6',
file: 'ri_triggers.c',
line: '3280',
routine: 'ri_ReportViolation'
}
[Nest] 25768 - 03/28/2020, 4:28:40 PM {"code":500,"timestamp":"2020-03-28T19:28:40.221Z","path":"/idea/9452b702-e7e8-4585-adf7-ee84d16306cb","method":"DELETE","message":"update or delete on table \"idea\" violates foreign key constraint \"FK_861b419cce1c9ae64295300d6b6\" on table \"comment\""} +12315ms