(四.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 运行这个文件 检测运行 执行同步
在这里插入图片描述

增删改成 & 连表查询

posted @ 2022-08-10 10:43  无梦南柯  阅读(602)  评论(0编辑  收藏  举报