创建模型 (表)
1 let User = sequelize.define('user', {
2 id: {
3 type: Sequelize.INTEGER,
4 primaryKey: true,
5 autoIncrement: true
6 },
7 name: {
8 type: Sequelize.STRING,
9 allowNull: false,
10 unique: true,
11 },
12 age: {
13 type: Sequelize.TINYINT,
14 defaultValue: 66,
15 },
16 gender: {
17 type: Sequelize.ENUM(['男', '女']),
18 defaultValue: '男',
19 }
20 });
1 let Book = sequelize.define('book', {
2 id: {
3 type: Sequelize.INTEGER,
4 primaryKey: true,
5 autoIncrement: true
6 },
7 name: {
8 type: Sequelize.STRING,
9 allowNull: false,
10 unique: true
11 },
12 price: {
13 type: Sequelize.DOUBLE,
14 defaultValue: 66,
15 },
16 userId: {
17 type: Sequelize.INTEGER,
18 allowNull: false,
19 references: { // 外键
20 mode: User, // 引用的是User表
21 key: 'id', // 中的 id 字段
22 }
23 }
24 });
建立关系
1 // 一个用户拥有多本书
2 User.hasMany(Book);
3 // 一本书属于一个用户
4 Book.belongsTo(User);
- 在定义Book模型(表)的时候通过 references 指定外键引用哪个 mode (模型)的哪个 key 字段
创建表并插入数据
1 ;(async () => {
2 await sequelize.sync({force: true});
3 await User.create({
4 id: 1,
5 name: 'zs',
6 age: 33,
7 gender: '男'
8 });
9 await Book.create({
10 id: 1,
11 name: 'javascript',
12 price: 99.99,
13 userId: 1
14 });
15 await Book.create({
16 id: 2,
17 name: 'sequelize',
18 price: 66.66,
19 userId: 1
20 });
21 })();
关联查询
1 // 关联查询 (在20行后面插入)
2 const u = await User.findOne({
3 where: {
4 id: 1
5 },
6 include: {
7 model: Book
8 }
9 });
10 console.log(u.dataValues.books);