#typescript #graphql #nestjs #apollo #typeorm
Вопрос:
Я новичок в nestjs. У меня есть две сущности:
@Entity({ name: "Books" })
@ObjectType()
export class Book {
@PrimaryGeneratedColumn()
@Field()
id: number;
@Column()
@Field()
title: string;
@ManyToMany(() => Author, (author: Author) => author.books)
@Field(() => [Author])
authors: Author[];
}
@Entity({ name: "Authors" })
@ObjectType()
export class Author {
@PrimaryGeneratedColumn()
@Field()
id: Number;
@Column()
@Field()
firstName: string;
@Column()
@Field()
lastName: string;
@ManyToMany(() => Book, (book: Book) => book.authors)
@JoinTable()
@Field(() => [Book])
books: Book[];
}
Это автоматически дает мне третью пустую таблицу «authors_books_books». Как установить отношения между авторами и книгами? Не только между абстрактным автором и абстрактной книгой, но и укажите, что этот автор с идентификатором: x написал книгу с идентификатором: y? Другими словами: как я могу заполнить таблицу «authors_books_books» данными?
Ответ №1:
Typeorm технически имеет встроенные способы справиться с этим…
Тем не менее, я предпочитаю быстрый способ, который не требует наличия объектов:
await this.manager.query(
'INSERT INTO authors_books_books ("authorId", "bookId") VALUES ($1, $2)',
[authorId, bookId],
);