使用 Sequelize 和 NestJs 的多对一

Many-To-One using Sequelize and NestJs

我正在尝试建立多对一关系(每个 Book 都有一个 Category,但是有很多 Book 具有相同的 Category ).

Nest 总是抛出这个错误:[ExceptionHandler] Foreign key for "Book" is missing on "Category".

为什么我的类别模型中需要外键?不是应该相反,Book 有一个 Category 的外键吗?

book.model.ts

@Table({tableName: 'BOOK'})
export class Book extends BaseModel<Book> {

    ... some fields
    
    @ForeignKey(() => Category)
    @Column({field: 'CATEGORY_ID'})
    categoryId: number // Category ID stored in my Database

    @HasOne(() => Category)
    category: Category    
}

category.model.ts

@Table({tableName: 'CATEGORY'})
export class Category extends BaseModel<Category> {
    @Column({field: 'NAME'})
    name: string

    @BelongsTo(() => Book)
    book: Book
}

base.model.ts

export class BaseModel<T> extends Model<T> {
    @Column({field: 'ID', primaryKey: true, autoIncrement: true, type: DataType.BIGINT })
    id: number;

    ... some other stuff
}

谢谢

已解决, 我做到了,所以类别有一个书的列表。

book.model.ts

@Table({tableName: 'BOOK'})
export class Book extends BaseModel<Book> {

    ... some fields
    
    @ForeignKey(() => Category)
    @Column({field: 'CATEGORY_ID'})
    categoryId: number // Category ID stored in my Database

    @BelongsTo(() => Category)
    category: Category    
}

category.model.ts

@Table({tableName: 'CATEGORY'})
export class Category extends BaseModel<Category> {
    @Column({field: 'NAME'})
    name: string

    @HasMany(() => Book)
    book: Book[]
}

现在按预期工作