node.js后端之sequelize


node.js后端之sequelize

簡單來說,node.js是運行在后端的javascript,后端肯定需要訪問數據庫,而今天我們要介紹的對象就是可以讓你不用再痛苦的寫sql語句,提高效率的ORM框架——sequelize。

准備工作

安裝

首先新建一個文件夾sequelize_demo,打開終端(默認已經有node環境),輸入npm init,這會初始化此文件夾並生成一個.json文件,一路回車默認即可。

接下來安裝express框架:

$ npm install express --save

然后安裝sequelize框架和mysql驅動:

$ npm install --save sequelize
$ npm install --save mysql2

ok,安裝完成

創建文件

解析來創建我們需要用到的文件,文件目錄如下~

連接數據庫

接下來開始數據庫的連接,打開db.js

//db.js
var Sequelize = require('sequelize');

//四個參數分別是 數據庫名稱,用戶名,密碼,配置

module.exports = new Sequelize('farmer', 'root', '123456', { //換成自己的數據庫
    host: 'localhost', // 數據庫地址
    dialect: 'mysql', // 指定連接的數據庫類型
    pool: {
        max: 5, // 連接池中最大連接數量
        min: 0, // 連接池中最小連接數量
        idle: 10000 // 如果一個線程 10 秒鍾內沒有被使用過的話,那么就釋放線程
    }
});

模型文件user.js,這個模型用來和數據庫里的表對應,一個模型就代表一個表格,我們編寫好模型,可以讓sequelize為我們自動創建數據庫表,非常方便。使用define函數來創建模型

// user.js
 var Sequelize = require('sequelize');
var sequelize = require('./db');
 
// 創建 model
    const User = sequelize.define('user', {
        userName: {
            type: Sequelize.STRING, // 指定值的類型
            field: 'user_name' // 指定存儲在表中的鍵名稱
        },
        // 沒有指定 field,表中鍵名稱則與對象鍵名相同,為 email
        email: {
            type: Sequelize.STRING
        }
    }, {
        // 如果為 true 則表的名稱和 model 相同,即 user
        // 為 false MySQL創建的表名稱會是復數 users
        // 如果指定的表名稱本就是復數形式則不變
        freezeTableName: false
    });
//如果不存在就創建此表
 var user = User.sync({ force: false });

// 添加新用戶
exports.addUser = function(userName, email) {
    // 向 user 表中插入數據
    return User.create({
        userName: userName,
        email: email
    });
};

然后進入終端,啟動服務 node app.js,打開數據庫會發現已經有表格創建好了。最后的createdAt和updatedAt是sequelize自動添加的,當然不想要可以這樣:

  // 不要添加時間戳屬性 (updatedAt, createdAt)
  timestamps: false,

接下來編寫測試函數testUser.js,這里我們就可以愉快的使用sequelize封裝好的函數來操作啦,和sql語句說拜拜!

常用的函數如 find,findAll,create,詳細可看官方文檔https://sequelize.org/v5/manual/models-usage.html

//testUser.js
var user = require('./user'); //引入模型
 
// 添加用戶
user.addUser('jack', 'jack@163.com').then(function() {
    // 查詢新添加的用戶
    return user.findOne({ where: { user_name: userName }}) 
    
}).then(function(user) {
    console.log('****************************');
    console.log('user name: ', user.userName);
    console.log('user email: ', user.email);
});

進入終端,運行testUser

node testUser.js

打開數據庫就會發現數據已經插入到數據庫中了~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM