问题描述
我正在尝试建立多对一的关系(每个 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[]
}
现在按预期工作