絕版Node--Sequlize搭建服務(Node全棧之路)

絕版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

相關文章
相關標籤/搜索