前言
使用 Sequelize 来实现一对多关系(One-to-Many relationship)是非常常见的情况。在 Sequelize-Typescript 中,你可以通过定义模型之间的关联来实现一对多关系,使用 HasMany 和 BelongsTo 来定义模型之间的一对多关系。
示例
首先,安装必要的依赖
npm install sequelize sequelize-typescript mysql2
然后,创建两个模型:一个代表父模型(例如 User
),另一个代表子模型(例如 Post
),并定义它们之间的一对多关系
// User 模型
import { Table, Column, Model, HasMany } from 'sequelize-typescript';
import Post from './Post';
@Table
export default class User extends Model<User> {
@Column
name: string;
@HasMany(() => Post)
posts: Post[];
}
// Post 模型
import { Table, Column, Model, ForeignKey, BelongsTo } from 'sequelize-typescript';
import User from './User';
@Table
export default class Post extends Model<Post> {
@Column
title: string;
@ForeignKey(() => User)
@Column
userId: number;
@BelongsTo(() => User)
user: User;
}
User
和 Post
分别代表父模型和子模型,User
拥有多个 Post
,在 User
模型中使用 @HasMany
定义了一对多关系,而在 Post 模型中使用 @BelongsTo
和 @ForeignKey
定义了与 User 模型的关联,表示的意思是 一个 User 有多个 Post,一个 Pose 属于一个 User。
最后,配置 Sequelize 连接到数据库并同步模型
import { Sequelize } from 'sequelize-typescript';
import User from './models/User';
import Post from './models/Post';
const sequelize = new Sequelize({
database: 'your_database',
dialect: 'mysql',
username: 'your_username',
password: 'your_password',
models: [User, Post],
});
sequelize.sync({ force: true }).then(() => {
console.log('Database synced');
});