sequelize是一个orm框架,什么是orm呢?即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了。
知道了sequelize
是什么,很想在项目中使用起来吧!那接下来开始我们的第一步吧!在项目的根目录运行 npm i mysql2 sequelize -S
依赖也有了,下面我们创建sequelize
的配置文件吧!在项目的根目录下新建src
目录,并在目录中新建seq.js
文件。
const Sequelize = require('sequelize')
const conf = {
host: 'localhost',
dialect: 'mysql'
}
const seq = new Sequelize('koa2_weibo_db', 'root', '111111', conf)
// 测试连接
seq.authenticate().then(() => {
console.log('ok')
}).catch(() => {
console.log('err')
})
module.exports = seq
写完后可以使用node命令运行一下,如果命令行输出了ok
,那就恭喜你成功了,是不是很简单~
接下来还有一点准备工作要进行,有了配置文件还不够,我们还需要创建模型和同步数据表的文件。在src
目录新建model.js
和sync.js
文件
// model.js
const Sequelize = require('sequelize')
// 数据库配置文件
const seq = require('./seq')
// 创建 users 模型
const User = seq.define('user', {
// id 会自动创建,并设为主键、自增
userName: {
type: Sequelize.STRING,
allowNull: false,
comment: '用户名'
},
password: {
type: Sequelize.STRING,
allowNull: false,
comment: '密码'
},
nickName: {
type: Sequelize.STRING,
comment: '昵称'
}
// 自动创建 createdAt updatedAt
})
module.exports = {
User
}
同步数据表
const seq = require('./seq')
require('./model')
// 测试连接
seq.authenticate().then(() => {
console.log('ok')
}).catch(() => {
console.log('err')
})
// 执行同步
// force 值为 true 时,表示每次执行这个方法都会先将表给删掉,再重新创建
seq.sync({ force: true }).then(() => {
console.log('sync ok')
process.exit()
})
从现在开始,终于到了实战的时候了。现在我们的数据库中有了blogs
和users
两张表,但是我们还没有数据。那我们就添加 数据吧!在src
目录新建create.js
文件。
const { User, Blog } = require('./model')
// 如果前面写的报错的,也会执行后面的
!(async function () {
// 创建用户
const person = await User.create({
userName: 'lisi',
password: '123',
nickName: '李四'
})
console.log('person: ', person.dataValues)
const blog = await Blog.create({
title: '标题4',
content: '内容4',
userId: person.dataValues.id
})
console.log('blog: ', blog.dataValues)
})()
使用node
运行一下这个文件