(四.1)sequelize的创建 模型、外键
sequelize
ORM —— 对象关系映射 —— Object Relational Mapping
数据表 用js的模型class 来代替
一条或者多条的记录,用js中一个对象或者数组代替
sql语句,可以使用对象的方法代替(指的就是事件对象)
建模 & 同步到数据库
可以初始化测试环境来使用(mysql2 指的就是npm里面另一个的库)
npm i mysql2 sequelize -d
下面创建模型的代码要放到一个npm初始化的项目里面去,这样更方便一些
创建seq.js 创建连接的文件
const Sequelize = require('sequelize')
配置文件 创建实例对象的是时候 需要写相应的配置
const conf = {
host: '127.0.0.1',
dialect:'mysql' //数据的库的类型
}
const seq = new Sequelize('数据库的名称','用户名','密码',conf)
module.exports = seq
创建模型文件 (以及外键)
之前是直接是用可视化工具建表,勾选主键,id自增,等等。这里可以新建一个模型,使用sequelize的API创建数据表,有些东西他是自动帮你弄的,比如会自动创建自增id主键。还会有新增时间、修改时间、创建的表的名称自动变复数
创建user模型:
新建model.js
const Sequelize = require('sequelize')
//引入上述创建的seq对象
const seq = require('./seq')
//创建user模型,数据表自动变复数就是users
const User = seq.define('user',{
//id会自动创建,并且是主键,自增
userName:{
type:Sequelize.STRING, //默认是varchar(255)
allowNull:false //是否可为空
},
password:{
type:Sequelize.STRING, //默认是varchar(255)
allowNull:false //是否可为空
},
nickName:{
type:Sequelize.STRING, //默认是varchar(255)
comment:'真实名称' //创建备注
}
})
const Blog = seq.define('blog',{
title:{
type:Sequelize.STRING, //默认是varchar(255)
allowNull:false //是否可为空
},
content:{
type:Sequelize.STRING, //默认是varchar(255)
allowNull:false //是否可为空
},
userId:{
type:Sequelize.INTEGER, //默认是varchar(255)
allowNull:false //是否可为空
},
})
//创建外键
Blog.belongTo(User,{
//创建外键 Blog.userId -> User.id
foreignKey:'userId'
})
// 也是一种创建 但是要写上 意思就是 你后边在做关联查询的时候需要从哪个方面去查询,
// 要是从博客里面查询关联的用户信息那就是第一种 ,
// 但要是查询人员关联的博客列表,就要加上第二种
User.hanMany('Blog',{
//创建外键 Blog.userId -> User.id
foreignKey:'userId'
})
module.exports = {
User,
Blog
}
这是可视化工具产生的ER图
新建执行文件 sync.js
const seq = require('./seq')
require('./model') //引用进来这个model模型
//测试连接
seq.authenticate().then(()=> {
console.log('auth ok')
}).catch(()=>{
console.log('auth err')
})
//执行同步
// force:true 强制更新的意思
seq.sync({force:true}).then(()=>{
console.log('sync ok)
process.exit //程序退出
})
node sync 运行这个文件 检测运行 执行同步
增删改成 & 连表查询
咫尺远近却无法靠近的那个你,才敢让你发觉你并不孤寂