Я создаю API блога и имею 2 сущности posts
и terms
, связанные вместе с помощью отношения many to many
.
В моей сущности терминов у меня есть столбец UNIQUE
с именем slug
, который необходимо настроить для предотвращения дублирования терминов.
Поэтому, когда я создаю новый пост с новым термином все хорошо.
Проблема возникает, когда я пытаюсь создать новое сообщение с существующим term slug
, которое выдает ошибку дублирования вместо обновления.
Это происходит потому, что мой столбец слага UNIQUE
не является моим первичным ключом, и я не могу передать id
с запросом, поскольку он сгенерирован и неизвестен !!.
Так что мой Вопрос в том, как исправить этот конфликт?
Мой пост сущности:
@Entity('posts')
export class Post {
@PrimaryGeneratedColumn({
type: 'bigint'
})
id: number;
// ...
@ManyToMany(type => Term, term => term.posts, {cascade: true, eager: true,})
@JoinTable({
name: 'TermsPostsRelations',
joinColumn: {
name: 'postId',
referencedColumnName: 'id'
},
inverseJoinColumn: {
name: 'termId',
referencedColumnName: 'id'
}
})
terms: Term[];
}
Мой термин сущность:
@Entity('terms')
export class Term {
@PrimaryGeneratedColumn({
type: 'bigint'
})
id: number;
//...
@Column({
unique: true,
})
slug: string;
}
Пример моего запроса на создание нового поста с термином;
{
"date": "2020-02-14T14:51:37",
"title": "test post",
"slug": "test-post",
"link": "https://www.almuraba.net/news_view_314036.html",
"metdata": [{
"key": "video",
"value": "https:yt.com"
}],
"terms": [{
"name": "test term",
"slug": "test-term",
"taxonomy": "category"
}]
}