ORM
ORM,像操作对象一样操作数据库
入门
- 打开文档https://sequelize.org/,找到Get Started
CRM学习
yarn add sequelize (安装包)
- yarn add —dev types/sequelize(类型提示)
安装sequelize
进入mysql并创建一个数据库
docker exec -it mysql bash
mysql -u -root -p
create database hasson;
然后就创建成功了
抄文档的代码 然后改
test.js
const { Sequelize, Model, DataTypes } = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
dialect: 'mysql'
})
然后将我们的数据库信息写进去
const { Sequelize, Model, DataTypes } = require('sequelize');
const sequelize = new Sequelize('hasson', 'root', '123456', {
dialect: 'mysql'
})
// 创建User模型
class User extends Model { }
// 初始化User
// sequelize去初始化它。 modelNmae 表的名字
User.init({
username: DataTypes.STRING,
birthday: DataTypes.DATE
}, { sequelize, modelName: 'user' });
// 同步到数据库
// sync 同步 把上面创建的user对象,同步到数据库里面
sequelize.sync()
// 然后在user里面创建一条记录
.then(() => User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20)
}))
// 创建成功后,把这个记录打印出来
.then(jane => {
console.log(jane.toJSON());
});
运行该文件:node test.js
报错:需要安装mysql2这个包
yarn add mysql2
安装mysql2完成后,再次运行node test.js
成功。因为是用的新版本的docker desktop。所以是有默认的host的。
如果要修改host,就在连接数据库的时候加上host:
const sequelize = new Sequelize('hasson', 'root', '123456', {
dialect: 'mysql',
host:'***.***.**.***'
})
到数据库确认是否创建成功
docker exec -it mysql1 bash
mysql -u -root -p
show databases;
use hasson;
show tables;
describe users;
我们创建的是user,但是数据库的是users,应该是sequelize封装了,加了s。
如何查询数据库
文档:https://sequelize.org/v5/manual/querying.html
写个例子 test2.js
const { json } = require('sequelize');
const { Sequelize, Model, DataTypes } = require('sequelize');
const sequelize = new Sequelize('hasson', 'root', '123456', {
dialect: 'mysql'
// host:'***.***.**.***'
})
// 创建User模型
class User extends Model { }
// 初始化User
// sequelize去初始化它。 modelNmae 表的名字
User.init({
username: DataTypes.STRING,
birthday: DataTypes.DATE
}, { sequelize, modelName: 'user' });
async function run() {
const users = await User.findAll();
console.log(JSON.stringify(users))
sequelize.close() //关闭数据库
}
run()
node test2.js
删除数据库
代码:
User.destroy({
where: {
id: 1
}
})
const { Sequelize, Model, DataTypes } = require('sequelize');
const sequelize = new Sequelize('hasson', 'root', '123456', {
dialect: 'mysql'
// host:'***.***.**.***'
})
// 创建User模型
class User extends Model { }
// 初始化User
// sequelize去初始化它。 modelNmae 表的名字
User.init({
username: DataTypes.STRING,
birthday: DataTypes.DATE
}, { sequelize, modelName: 'user' });
async function run() {
User.destroy({
where: {
id: 1
}
})
const users = await User.findAll();
console.log(JSON.stringify(users))
sequelize.close()
}
run()
run:
之前是有数据的,现在数据库变空了
总结
所以使用sequelize的话,是不需要再写查询语句了,需要什么就去抄文档。
然后再修修改改,后面的事情sequelize会处理好。
SQL学习&测验
学习:https://www.w3school.com.cn/sql/index.asp
测验:https://www.w3school.com.cn/quiz/quiz.asp?quiz=sql