絕版Node--Sequlize搭建服務(Node全棧之路)html
參考資料:https://itbilu.com/nodejs/npm/VkYIaRPz-.htmlnode準備環境:Mysql,Nodemysql
前沿:sql
爲你們介紹一下,什麼是sequlize,ssequlize是基於node的一個ORM框架,若是你有Java 或者是C#開發經驗,咱們在操做數據庫的時候會用到一些ORM映射數據庫的表實體到咱們程序中的實體類,這裏咱們稱之爲關係對象。數據庫
這裏說幾種ORM框架,NET中咱們有EF(微軟)、NHibernate(開源),Java中咱們有Hibernate,一樣Node的出現,它也有本身的ORM,那就是sequlize,它的出現,大大簡化了繁雜的sql語句操做數據庫,使得咱們編程更加高效,這裏ORM的出現,其優勢可不是爲了讓你少些SQL的,它會提供他本身的一套處理O-R-M 之間的關係,這樣使得咱們處理一些複雜數據的時候,很是容易。npm
對於老鳥來講:ORM上手起來是很是容易的,首先咱們從它的基本增刪該查講起,其次咱們掌握基本增刪該查後,會學習表之間的關係如何建立,(每個ORM都有他本身的一套指定表關係的模式),本人這裏熟悉EF,瞭解NHibernate,剛剛掌握Sequlize,指定表關係也無非就是,A表B表C表之間的關係,一對多,多對多,一對一。編程
對於每個ORM來講,掌握了這些,就能夠開發使用了。api
正式開始||微信
首先咱們要建立一個本地文件夾框架
用Dos定爲到這個文件夾,執行npm init 將其建立成爲一個Node包
而後在這個包裏安裝sequlize,具體操做以下截圖
而後在你剛建立的文件夾裏建立一個index.js文件,咱們今天全部的代碼,都將在index.js裏寫,而且index.js也是咱們的一個主入口文件。
基本增刪改查(index.js文件操做)
1 //引入框架 2 3 const Sequelize = require('sequelize'); 4 //建立ORM實例 5 const sequelize = new Sequelize('api', 'root','', 6 { 7 'dialect': 'mysql', // 數據庫使用mysql 8 } 9 ); 10 11 12 sequelize 13 .authenticate() 14 .then(()=>{ 15 console.log('連接成功'); 16 }) 17 .catch((error)=>{ 18 console.log('連接失敗'+error); 19 })
這裏須要鏈接咱們的MYSQL數據庫
當咱們鏈接好數據庫後,須要建立模型,以後sequlize會自動將你建立的模型映射到數據庫
下面咱們就能夠用User這個對象 來對數據庫中的user表經行增刪改查的操做了
咱們真的完事大吉了嗎?若是你這麼認爲,那就錯了!.....咱們須要把模型同步到數據庫裏
那麼如今你得數據庫就會自動建立好一張表
那麼如今就能夠真正經行增刪該查的操做了
不過這裏須要強調一點:
進入增刪該查:
這裏我須要徹頭徹尾的粘貼一下代碼,否則讀者該罵了
1 //引入框架 2 const Sequelize = require('sequelize'); 3 //建立ORM實例 api是個人數據庫名字 root登陸數據庫名 ‘’表示登陸個人數據庫不須要密碼 4 const sequelize = new Sequelize('api', 'root','', 5 { 6 'dialect': 'mysql', // 數據庫使用mysql 7 } 8 ); 9 10 sequelize 11 .authenticate() 12 .then(()=>{ 13 console.log('連接成功'); 14 }) 15 .catch((error)=>{ 16 console.log('連接失敗'+error); 17 }) 18 19 //模型的建立 20 //1,用代碼定義模型,而後同步到數據庫中 21 //2,經過已有數據庫生成ORM model 22 23 //本身看的知識點:數據驗證,要求,age不能爲負數! //這裏我建立了三個模型對象 ,會在數據中生成三張表 24 const User = sequelize.define('user',{ 25 name:Sequelize.STRING,//定義表結構 name 爲string類型 26 age:Sequelize.INTEGER,//定義表結構 27 }); 28 29 const Message = sequelize.define('message',{ 30 text:Sequelize.STRING,//定義表結構 31 }); 32 33 const Image = sequelize.define('image',{ 34 url:Sequelize.STRING,//定義表結構 35 });1 //同步全部的model和全部關係 2 sequelize.sync();
下面在作修改,修改要加id,不加id會報錯
下面咱們在作查詢操做
1 // 單條數據查詢 2 SELECT `id`, `first_name` AS `firstName`, `lastName`, `createdAt`, `updatedAt` FROM `user` AS `user` WHERE `user`.`id` = 1 3 4 // 多條數據查詢 5 SELECT `id`, `first_name` AS `firstName`, `lastName`, `createdAt`, `updatedAt` FROM `user` AS `user`
在這裏再補充點查詢 ,(若是咱們想查詢部分字段怎麼半)
1 // User.findOne().then(u=>{ 2 // console.log('=========================='); 3 // console.log(u.dataValues); 4 // console.log('=========================='); 5 6 // }); 7 // //第二查詢 8 User.findAll({ 9 where:{id:2}, 10 attributes:['lastName']//查詢部分字段,即沒必要查詢出來你表中全部的字段 相似於 select xx,cc from table 11 }) 12 .then((users)=>{ 13 console.log('=========================='); 14 console.log(JSON.stringify(users)); 15 console.log('=========================='); 16 }); 17 // //第三查詢 18 // User.findOne({where:{id:2}}) 19 // .then((users)=>{ 20 // console.log('=========================='); 21 // console.log(JSON.stringify(users)); 22 // console.log('=========================='); 23 // }); 24 25 // //第四查詢 26 // User.findOne({where:{id:3}}) 27 // .then((u)=>{ 28 // console.log('=========================='); 29 // // console.log(u); 30 // console.log('=========================='); 31 32 // });
最後咱們說刪除
好了,記住,刪除叫destroy!!!
基本增刪該查咱們就到這裏,下一篇文章講一下,如何實現多表之間的對應關係,一對一hasOne 一對多 belong to hasManay .
..若是有問題的朋,歡迎加我微信:jkxx123321