最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

NodeJS?Express使用ORM模型訪問關系型數據庫流程詳解

 更新時間:2023年01月10日 16:23:57   作者:禿頭小宋s  
這篇文章主要介紹了NodeJS?Express使用ORM模型訪問關系型數據庫流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧

一、ORM模型

設計思想,主要目的是簡化計算機程序訪問數據庫

1、ORM:對象關系模型(對象關系映射) Object Releastion Model,將程序中的對象和數據庫中關系(表格)進行映射??梢允归_發(fā)者在程序中方便的對數據庫進行操作(用戶在程序操作對對象實際就是操作數據庫的表格)

2、ORM的映射關系:

(1)程序中的模型(即為類) <——>表名

(2)模型的類型(類中定義的屬性)<——> 表的列

(3)由模型創(chuàng)建的對象(類的實例) <——> 表中的行

二、在Node中ORM的實現

1、Sequelize模塊:支持ORM映射的模塊,可以訪問關系型數據庫,可以提高node程序訪問數據庫的開發(fā)效率。

2、Sequelize模塊的使用:

(1)安裝MySQL模塊:npm install mysql2

(2)安裝Sequelize模塊:npm install sequelize

3、Sequelize模塊的使用

(1)創(chuàng)建數據庫的配置文件

導入

創(chuàng)建數據庫的配置對象

//1.導入Sequelize模塊
const Sequelize = require('sequelize');
//2.使用Sequelize模塊配置和數據庫的連接信息
const mysql_Sequelize = new Sequelize('sales','root','syy2589',{
    host:'localhost', //數據庫服務器的IP地址或域名
    port:'3306', //數據庫使用的端口號,MySQL數據庫默認端口號3306
    dialect: 'mysql', //數據庫的類型
    pool:{  //數據庫連接池:可以放若干個數據庫的連接對象,提高數據庫訪問效率
        max:20, //數據庫連接池中連接對象的最大個數
        min:3, //數據庫連接池中連接對象的最少個數
        idle:20000 //等待延遲的時間,單位:毫秒
    },
    define:{
        'charset':'utf8' //處理MySQL中中文字符的問題
    }
})
// 3.導出數據庫的連接對象
module.exports = mysql_Sequelize;

注:new Sequelize(數據庫名,用戶名,密碼,(配置信息))

 測試數據庫是否連接成功

const mysqltest = require('./mysqlconfig.js');
mysqltest.authenticate() //用來測試數據庫是否連接成功
    .then(()=>{
        console.log('數據庫連接成功~')
    })
    .catch((err)=>{
        console.error(err);
    })

(2)創(chuàng)建模型:實現模型和數據表的映射

模型名 = sequelize.define('數據表名','模型的屬性',{其他配置})

模型名 <——> 數據表名

模型的屬性<——> 數據表列

const  Sequelize = require(sequelize);
//1.導入數據庫的配置對象
const mysql_Sequelize = require('../config/mysqlconfig.js');
// 2.創(chuàng)建模型與數據庫中的表實現映射
const Employee = mysql_Sequelize.define('employee',{
    'e_id':{
        type:Sequelize.STRING,
        // type:Sequelize.INTEGER, 表示id的數據類型為int型
        autoIncrement:false, //表示id的值在表中是否自增
        allowNull:false, //表示id對象的值不能為空
        fields:'e_id',//實現模型的屬性名和表的列名之間的映射關系(對應關系)
    },
    'e_name':{
        type:Sequelize.STRING,
        autoIncrement:false,
        allowNull:false,
        fields: 'e_name',
    },
    'sex':{
        type:Sequelize.STRING,
        autoIncrement:false,
        allowNull:false,
        fields: 'sex',
    },
    'apartment':{
        type:Sequelize.STRING,
        autoIncrement:false,
        allowNull:true,
        fields: 'apartment',
    },
    'phone':{
        type:Sequelize.STRING,
        autoIncrement:false,
        allowNull:true,
        fields: 'phone',
    },
    'address':{
        type:Sequelize.STRING,
        autoIncrement:false,
        allowNull:true,
        fields: 'address',
    },
},{
    freezeTableName:true, //不使用Sequelize給模型自定義的表名(自定義表名的命名規(guī)則:模型名后加s)
    timestamps:false //若為true,在獲取數據時會自動添加兩列數據(createTime、updateTime)
});
// 導出模型
module.exports = Employee;

(3)創(chuàng)建接口文件:使用模型創(chuàng)建數據表

插入記錄

模型名.create({ }).then((result)=>{}):then表示插入操作完成后的處理,result參數中保存有數據庫返回的信息

// http://localhost:9000/employee/addemp
Emprouter.post('/addemp',(req,res)=>{
    console.log(req.body);
    Employee.create({
        id:req.body.id,
        name:req.body.name,
        sex:req.body.sex,
        apartment:req.body.apartment,
        phone:req.body.phone,
        address:req.body.address
    }).then((result)=>{
        if(result){
            res.json({
                code:1002
            })
        }
    })
})

(4)前端頁面:使用jQuery向服務器端發(fā)起ajax請求

表單序列化:表單名.serizlize(),作用是將表單中所有控件的值序列化成字符串

刪除記錄

模型名:destroy({

where:{

列名:值

}

}).then((result)=>{

刪除成功后的回調

}

更新記錄

模型名.update({修改的列},{where條件}.then((result)={

更新成功后的回調

}).catch((e)=>{

出現異常的回調

})

查詢記錄

模型名.findAll().then((result)=>{ //result:是一個數組,存放的是從數據庫中查詢的所有記錄

查詢成功后的回調

}).catch((e)=>{

執(zhí)行查詢出現異常的回調

}

Emprouter.get('/findemp',(req,res)=>{
    if(req.url != './favicon.ico'){
        Employee.findAll().then((result)=>{
            res.send(JSON.stringify(result));
        })
    }
})

模糊查詢:

在執(zhí)行帶條件查詢時,需要導入Sequelize模塊的Op子模塊,在Op子模塊中存放的是所有條件查詢的關鍵字。

const Op = require('sequelize').Op;
Emprouter.post('/findlike',(req,res)=>{
    // 獲取前端發(fā)送的部門
    let apartment = req.body.apartment;
    // 進行模糊查詢
    Employee.findAll({
        where:{
            apartment:{
                [Op.like]:apartment+'%'
            }
        }
    }).then((result)=>{
        res.json(result);
    }).catch((e)=>{
        console.log(e);
        res.json('查詢失敗~')
    })
})

到此這篇關于NodeJS Express使用ORM模型訪問關系型數據庫流程詳解的文章就介紹到這了,更多相關NodeJS Express訪問關系型數據庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Nodejs開發(fā)grpc的實例代碼

    Nodejs開發(fā)grpc的實例代碼

    Nodejs開發(fā)grpc包含靜態(tài)和動態(tài)兩種代碼生成方式,靜態(tài)代碼生成需要提前通過.proto文件編譯生成JS源碼,而動態(tài)代碼生成則是在運行時指定IDL文件位置,實時生成源碼,兩者各有優(yōu)缺點,本文給大家介紹Nodejs開發(fā)grpc的實例代碼,感興趣的朋友一起看看吧
    2024-10-10
  • Node.js學習之TCP/IP數據通訊(實例講解)

    Node.js學習之TCP/IP數據通訊(實例講解)

    下面小編就為大家?guī)硪黄狽ode.js學習之TCP/IP數據通訊(實例講解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 從Node.js事件觸發(fā)器到Vue自定義事件的深入講解

    從Node.js事件觸發(fā)器到Vue自定義事件的深入講解

    這篇文章主要給大家介紹了關于從Node.js事件觸發(fā)器到Vue自定義事件的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-06-06
  • nodejs制作爬蟲實現批量下載圖片

    nodejs制作爬蟲實現批量下載圖片

    本文給大家分享的是作者使用nodejs制作爬蟲來爬去圖片并批量下載的全過程,非常的細致,有需要的小伙伴可以參考下
    2017-05-05
  • 一文詳解如何降低node包版本

    一文詳解如何降低node包版本

    這篇文章主要給大家介紹了關于如何降低node包版本的相關資料,在開發(fā)的工程中我們可能需要經常切換node版本來應對不同的開發(fā)環(huán)境,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • express搭建的nodejs項目使用webpack進行壓縮打包

    express搭建的nodejs項目使用webpack進行壓縮打包

    對于打包這個問題它并不是難點,但是對于我們這種初學者來說,根本就不知道應該怎么做,下面這篇文章主要給大家介紹了關于express搭建的nodejs項目使用webpack進行壓縮打包的相關資料,需要的朋友可以參考下
    2022-12-12
  • Node.js基礎入門之path模塊,url模塊,http模塊使用詳解

    Node.js基礎入門之path模塊,url模塊,http模塊使用詳解

    這篇文章主要為大家介紹了Node.js中的三個模塊(path、url、http)的使用詳解,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-03-03
  • Node.js多文件Stream合并,串行和并發(fā)兩種模式的實現方式

    Node.js多文件Stream合并,串行和并發(fā)兩種模式的實現方式

    這篇文章主要介紹了Node.js多文件Stream合并,串行和并發(fā)兩種模式的實現方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Npm link的作用與使用示例代碼

    Npm link的作用與使用示例代碼

    npm link可以幫助我們模擬包安裝后的狀態(tài),它會在系統(tǒng)中做一個快捷方式映射,讓本地的包就好像 install 過一樣,可以直接使用,這篇文章主要介紹了Npm link的作用與使用示例代碼,需要的朋友可以參考下
    2023-01-01
  • NodeJS遍歷文件生產文件列表功能示例

    NodeJS遍歷文件生產文件列表功能示例

    這篇文章主要介紹了NodeJS遍歷文件生產文件列表功能,結合實例形式分析了nodejs針對文件與目錄的遍歷、判斷及讀寫等相關操作技巧,需要的朋友可以參考下
    2017-01-01

最新評論

固镇县| 十堰市| 普安县| 新乡县| 育儿| 育儿| 杭州市| 犍为县| 曲周县| 二连浩特市| 江安县| 通州区| 武隆县| 桦甸市| 潍坊市| 黄山市| 南安市| 广德县| 缙云县| 仙游县| 阿城市| 常州市| 满洲里市| 丹阳市| 原阳县| 邓州市| 长春市| 定边县| 会同县| 宁武县| 家居| 新龙县| 黑山县| 眉山市| 阿尔山市| 板桥市| 万年县| 马龙县| 寿宁县| 云南省| 丰原市|