最近剛開始接觸Sequelize,當中遇到不少坑,所以想寫篇Sequelize入門和大家分享,避免有道友和我一樣爬坑。 學習sequelize的初衷是想解決SQL注入,它支持MySQL, SQLite, MariaDB and MSSQL,文中以MySQL舉例。
第一步:實例化sequelize數據庫連接
var Sequelize = require('sequelize'); var sequelize = new Sequelize('database','user','password',{host : 'XXX', port : 'XXX', dialect : 'mysql'});
當然,我只是用了最簡單的連接方式,具體的參數詳見http://www.nodeclass.com/api/sequelize.html
第二步:定義Model,通俗來說就是將你的表結構定義出來。
var a= sequelize.define('a', { id: {type: Sequelize.STRING, max: 20}, Typess: {type: Sequelize.STRING, max: 20}, startStation: {type: Sequelize.STRING, max: 20}, endStation: {type: Sequelize.STRING, max: 20}, R_Date: {type: Sequelize.STRING, max: 20}, Distance: {type: Sequelize.STRING, max: 20} },{ freezeTableName: true, timestamps: false})
define里面的第一個參數是表名;第二個參數是定義字段,這里我只是最簡單的定義了類型、長度,類如是否允許為空,default值等等就需要大家參考文檔了; 第三個參數不填的話會使用默認定義選項提供給Sequelize構造函數。此處讓我爬坑爬了許久...
簡單介紹下其中的兩個參數:
freezeTableName: 默認為false,當為false時,如果你數據庫中已有表a的話,sequelize會修改你的表名,我測試的結果是幫我的表名"a" 加了個s,導致我查詢表a的數據時,總會報不存在該表。
timestamps: 默認為true,它會為你的表添加兩個額外的字段“createdAt”、"updatedAt"。