国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

Node.JS使用Sequelize操作MySQL的示例代碼

2024-05-06 15:25:52
字體:
供稿:網(wǎng)友

Node.JS提供了操作數(shù)據(jù)庫(kù)的基礎(chǔ)接口,我們可以通過mysql模塊的query方法進(jìn)行操作,但是需要編寫SQL語(yǔ)句,對(duì)于SQL語(yǔ)句并不精通的人來說有一定的難度,而且在代碼中保留SQL語(yǔ)句也有一定的危險(xiǎn)性。為了方便進(jìn)行數(shù)據(jù)庫(kù)操作,ORM框架應(yīng)運(yùn)而生,Sequelize正是這樣的模塊。

安裝Sequelize

首先,使用cd命令將終端控制臺(tái)定位到項(xiàng)目的根目錄,然后使用npm安裝:

npm install sequelize --save

安裝mysql2

由于sequelize依賴于mysql2所以也需要安裝mysql2:

npm install mysql2 --save

編寫配置

在項(xiàng)目根目錄新建個(gè)“configs”文件夾,在文件夾中新建一個(gè)名為“mysql-config.js”的文件,代碼如下:

var config = {  dbname: 'testdb',  uname: 'root',  upwd: 'root',  host: 'localhost',  port: 3306,  dialect: 'mysql',  pool: {    max: 5,    min: 0,    idle: 10000  }};module.exports = config;

配置說明

dbname: 數(shù)據(jù)庫(kù)名稱 uname: 數(shù)據(jù)庫(kù)登錄名 upwd: 數(shù)據(jù)庫(kù)登錄密碼 host: 數(shù)據(jù)庫(kù)主機(jī) port: 數(shù)據(jù)庫(kù)端口,mysql默認(rèn)是3306 dialect: 數(shù)據(jù)庫(kù)類型,這里是mysql pool: 連接池配置

【具體配置詳見MySQL相關(guān)的博客】

對(duì)sequelize進(jìn)行簡(jiǎn)單封裝

在項(xiàng)目根目錄新建“data”文件夾,在改文件夾中新建“db.js”文件。在db.js中添加以下代碼。

首先,創(chuàng)建sequelize實(shí)例:

// 引入模塊const Sequelize = require('sequelize');// 讀取配置const mysqlConfig = require('../configs/mysql-config');// 根據(jù)配置實(shí)例化seqvar seq = new Sequelize(mysqlConfig.dbname, mysqlConfig.uname, mysqlConfig.upwd, {  host: mysqlConfig.host,  dialect: mysqlConfig.dialect,  pool: mysqlConfig.pool});

定義一個(gè)defineModel函數(shù)用于定義數(shù)據(jù)模型:

/** * 定義數(shù)據(jù)模型 *  * @param {any} name 模型名稱【數(shù)據(jù)庫(kù)表名】 * @param {any} attributes 數(shù)據(jù)字段集合 * @returns 數(shù)據(jù)模型對(duì)象 */function defineModel (name, attributes) {  var attrs = {};  for (let key in attributes) {    let value = attributes[key];    if (typeof value === 'object' && value['type']) {      value.allowNull = value.allowNull || false;      attrs[key] = value;    } else {      attrs[key] = {        type: value,        allowNull: false      };    }  }  // 附加公共字段  // attrs.id = {  //   type: ID_TYPE,  //   primaryKey: true  // };  attrs.createAt = {    type: Sequelize.BIGINT,    allowNull: false  };  attrs.updateAt = {    type: Sequelize.BIGINT,    allowNull: false  };  attrs.version = {    type: Sequelize.BIGINT,    allowNull: false  };  // 狀態(tài):0表示有效,1表示無(wú)效,2表示已刪除,默認(rèn)為0.  attrs.status = {    type: Sequelize.INTEGER,    allowNull: false  };     // 調(diào)用seq的方法定義模型并返回  return seq.define(name, attrs, {    tableName: name,    timestamps: false,    hooks: {      beforeValidate: function (obj) {        let now = Date.now();        if (obj.isNewRecord) {          obj.createAt = now;          obj.updateAt = now;          obj.version = 0;        } else {          obj.updateAt = now;          ++obj.version;        }      }    }  });}            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 南充市| 专栏| 浦东新区| 磴口县| 云安县| 宁南县| 博客| 拉萨市| 成武县| 宁津县| 抚远县| 大宁县| 丹江口市| 乌拉特后旗| 佳木斯市| 阿勒泰市| 白银市| 宝兴县| 贵南县| 定陶县| 肇东市| 克什克腾旗| 南宁市| 鲜城| 梁平县| 安泽县| 海丰县| 常熟市| 安阳市| 澄城县| 黄浦区| 宁蒗| 邹城市| 枝江市| 连州市| 鄢陵县| 宣武区| 新营市| 黄山市| 夏津县| 济宁市|