继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【备战春招】第7天 Sequlize 外键关联

stb烙饼
关注TA
已关注
手记 84
粉丝 2
获赞 4

课程章节:第2章 技术选型和知识点介绍(上)2-14

课程讲师双越

课程内容

上节课学习了Sequelize 的基本使用,并创建了用户模型 User Model。现在需要创建一个 Blog Model ,并通过外键,将这两张表进行关联。

创建 blog Model:

// src/db/blog.js

const Sequelize = require('sequelize');
const seq = require('./seq');

// 创建Blog Model
const Blog = seq.define('blog', {
  // 默认
  title: {
    type: Sequelize.STRING, 
    allowNull: false  
  },

  content: {
    type: Sequelize.TEXT, // blog的内容会很长,所以不能使用varchar(255),使用text类型
    allowNull: false
  },
   
  // 创建外键
  userId: { 
    // userId 字段将作为外键,关联的是 User 表中的 id 字段,使用 Integer 类型
    type: Sequelize.INTEGER
  }
});

module.exports = Blog;

外键关联

将Blog表的userId作为外键,和users进行关联,使用 belongsTo: 属于多对于一的关系:

// Blog表属于User表,属于n:1的关系,即一个user可以有多个blog
Blog.belongsTo(User, {
 // 设置哪个字段作为外键。
 // 自动将 userId 映射到 User表的id 字段:Blog.userId -> User.id
 foreignKey: 'userId'
});

有一种简略写法:定义Blog Model 时,不需要自己定义 userId 字段,然后由 sequelize 自动为我们创建外键。这样,User表的主键,Blog表的外键,都是由sequelize创建的了。但不推荐这种方式,不明显,没有语义。

图片描述

课程收获

这节课学习了使用 Sequlize 创建外键关联的方法,通过外键关联,就可以查询到所关联表的数据,可以降低数据的冗余,保持数据一致性(保证数据的引用完整性)。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP