為什么要使用sequelize?
Sequelize是node.js中的ORM框架,適合使用node去連接關系型數(shù)據(jù)庫,像操作對象一樣操作數(shù)據(jù)庫。
1.什么是ORM?
對象關系映射(英語:Object Relational Mapping),它是一種框架。
阮一峰的概述:https://www.ruanyifeng.com/blog/2019/02/orm-tutorial.html
sequelize中文網(wǎng):https://www.sequelize.com.cn/core-concepts/getting-started
B站學習課程(入門):https://www.bilibili.com/video/BV1LV411Z7tk?from=search&seid=13015578987094704173
sequelize是nodejs的第三方庫
-
現(xiàn)在 Node.js 使用最廣泛的 ORM 庫應該是 sequelize
github上面的星星指數(shù)
項目環(huán)境搭建
0. 啟動mysql服務,新建一個數(shù)據(jù)庫
1. 準備一個空的文件夾
2. npm init -y 初始化nodejs項目,生成package.json文件
3. npm install sequelize mysql2 -S 安裝sequelize依賴和mysql連接驅動
4. 新建一個index.js文件,以node index運行
目錄結構:

連接數(shù)據(jù)庫
index.js
//引入依賴
const { Sequelize } = require('sequelize');
//創(chuàng)建數(shù)據(jù)庫連接,官網(wǎng)有三種形式
//const sequelize = new Sequelize('mysql://root:12345678@localhost:8081/wx') //這種方式驗證報錯
const sequelize = new Sequelize('wx', 'root', '12345678', {
host: 'localhost',
dialect: 'mysql' /* 選擇驅動 'mysql' | 'mariadb' | 'postgres' | 'mssql' 其一 */
});
//測試數(shù)據(jù)庫是否連接成功
sequelize.authenticate()
.then(() =>{
console.log('Connection has been established successfully.');
})
.catch((error) =>{
console.error('Unable to connect to the database:', error);
})

創(chuàng)建一張表
//引入依賴
const {
Sequelize,
DataTypes,
Model
} = require('sequelize');
//創(chuàng)建數(shù)據(jù)庫連接,官網(wǎng)有三種形式
//const sequelize = new Sequelize('mysql://root:12345678@localhost:8081/wx') //這種方式驗證報錯
const sequelize = new Sequelize('wx', 'root', '12345678', {
host: 'localhost',
dialect: 'mysql' /* 選擇驅動 'mysql' | 'mariadb' | 'postgres' | 'mssql' 其一 */
});
//測試數(shù)據(jù)庫是否連接成功
sequelize.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch((error) => {
console.error('Unable to connect to the database:', error);
})
//創(chuàng)建一張表并創(chuàng)建字段,官網(wǎng)也有2種寫法:一種是sequelize.define定義,另一種是拓展extends的Model.init定義
class User extends Model {} //類名=表名
User.init({
// 在這里定義模型(字段)屬性
firstName: DataTypes.STRING,
//模型定義即可以簡寫又可以詳寫
userName: {
type: DataTypes.STRING,
allowNull: false,
unique:true //唯一
},
major: {
type: DataTypes.STRING,
allowNull: false
}
},{
timestamps: true,//開啟時間印花,就是生成2個字段,分別表示數(shù)據(jù)創(chuàng)建時間和數(shù)據(jù)修改的最新時間
sequelize, // 我們需要傳遞連接實例
modelName: 'User' // 我們需要選擇模型名稱
})
// 定義的模型是類本身
console.log(User === sequelize.models.User); // true
//開始執(zhí)行創(chuàng)建表
(async () => {
await sequelize.sync({ force: true });
})();

插入數(shù)據(jù)
//有了表后,我們就需要插入數(shù)據(jù)
const data = User.create({
firstName: 'Qin',
userName: '秦明',
major: '計算機專業(yè)'
}).then(() =>{
console.log('插入數(shù)據(jù)成功')
});

