sequelize學習和使用

為什么要使用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ù)成功')
});
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容