Node.js連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)過程詳解
創(chuàng)建數(shù)據(jù)庫(kù)
在前面的數(shù)據(jù)庫(kù)入門中我們講解了常用的sql語法以及實(shí)戰(zhàn),接下來我們來介紹一下如何在nodejs中使用數(shù)據(jù)庫(kù)
在前面的文章中我們有手把手使用docker創(chuàng)建數(shù)據(jù)庫(kù),這里就直接沿用之前創(chuàng)建的數(shù)據(jù)庫(kù)
首先啟動(dòng)docker,把之前的mysql容器運(yùn)行起來
然后登入mysql客戶端查看一下現(xiàn)有的數(shù)據(jù)庫(kù),以及user表
mysql
在前面我們已經(jīng)使用mysql自帶的客戶端連接數(shù)據(jù)庫(kù)進(jìn)行一些操作, 到了node.js中我們可以用mysql這個(gè)npm包來連接mysql數(shù)據(jù)庫(kù),這個(gè)包也同樣實(shí)現(xiàn)了mysql協(xié)議
首先安裝一下依賴,
pnpm install mysql
按照文檔配置好連接數(shù)據(jù)庫(kù)的參數(shù)
const mysql = require('mysql'); const connection = mysql.createConnection({ host: '127.0.0.1', user: 'root', password: 'password', database: 'jym', port: '2333', }); connection.connect(); connection.query('SELECT * FROM Users', function (error, results, fields) { if (error) throw error; console.log('The solution is: ', results[0].solution); }); connection.end();
運(yùn)行之后出現(xiàn)了下面這個(gè)錯(cuò)誤,似乎是mysql這個(gè)npm包不支持mysql8導(dǎo)致的,具體可以查看這個(gè)issue
'Client does not support authentication protocol requested by server; consider upgrading MySQL client',
沒辦法,只能換一個(gè)npm包試試看了
pnpm uninstall mysql pnpm install mysql2
mysql2的語法和mysql那個(gè)基本一樣
// get the client const mysql = require('mysql2'); // create the connection to database const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'jym', password: 'password' }); connection.connect(); connection.query('SELECT * FROM user', function (error, results, fields) { if (error) throw error; console.log('The solution is: ', JSON.stringify(results)); }); connection.end();
運(yùn)行結(jié)果如下,可以看到下面的數(shù)據(jù)和上方使用mysql客戶端查出來結(jié)果一致
The solution is: [{"name":"jym","age":"1"},{"name":"jym2","age":"2"},{"name":"jym3","age":"3"},{"name":"jym4","age":"4"}]
通過mysql2這個(gè)包,我們就可以用node.js連接數(shù)據(jù)庫(kù)了,可以使用一些基礎(chǔ)的API來直接操作mysql數(shù)據(jù)庫(kù);比如上面的代碼中就執(zhí)行了'SELECT * FROM user'這個(gè)sql語句
除了使用這種基礎(chǔ)庫(kù)之外,我們還可以使用ORM(對(duì)象關(guān)系映射器)框架來連接數(shù)據(jù)庫(kù),直接用OOP的方式來編寫模型和方法,ORM框架會(huì)幫助你生成對(duì)應(yīng)的sql語句,這樣就可以把關(guān)注點(diǎn)放在業(yè)務(wù)上面,而不用編寫SQL語句。這可以讓你的代碼更加簡(jiǎn)潔和可維護(hù)
目前在nodejs中常用的ORM有prisma,sequlize,typeorm等等,下回我們就來嘗試一下如何用ORM來連接數(shù)據(jù)庫(kù)
以上就是Node.js連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)過程詳解的詳細(xì)內(nèi)容,更多關(guān)于Node.js連接數(shù)據(jù)庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用cluster 將自己的Node服務(wù)器擴(kuò)展為多線程服務(wù)器
nodejs在v0.6.x之后 增加了一個(gè)模塊 cluster 用于實(shí)現(xiàn)多進(jìn)程,利用child_process模塊來創(chuàng)建和管理進(jìn)程,增加程序在多核CPU機(jī)器上的性能表現(xiàn)。本文將介紹利用cluster模塊創(chuàng)建的多線程的問題。2014-11-11nodeJS與MySQL實(shí)現(xiàn)分頁(yè)數(shù)據(jù)以及倒序數(shù)據(jù)
這篇文章主要介紹了nodeJS與MySQL實(shí)現(xiàn)分頁(yè)數(shù)據(jù)以及倒序數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06ajax +NodeJS 實(shí)現(xiàn)圖片上傳實(shí)例
本篇文章主要介紹了ajax +NodeJS 實(shí)現(xiàn)圖片上傳實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06手動(dòng)下載Chrome并解決puppeteer無法使用問題
本篇文章主要介紹了手動(dòng)下載Chrome并解決puppeteer無法使用問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11Node.js開發(fā)之訪問Redis數(shù)據(jù)庫(kù)教程
這篇文章主要介紹了Node.js開發(fā)之訪問Redis數(shù)據(jù)庫(kù)教程,本文講解了安裝Redis的Node.js驅(qū)動(dòng)、編寫測(cè)試程序以及npm遠(yuǎn)程服務(wù)器連接十分緩慢的解決方法,需要的朋友可以參考下2015-01-01從零開始學(xué)習(xí)Node.js系列教程之設(shè)置HTTP頭的方法示例
這篇文章主要介紹了Node.js設(shè)置HTTP頭的方法,詳細(xì)分析了常見HTTP頭的功能、原理及相關(guān)設(shè)置操作技巧,需要的朋友可以參考下2017-04-04Node.js中MongoDB查詢數(shù)據(jù)的方法
在Node.js中,可以使用MongoDB驅(qū)動(dòng)程序和Mongoose庫(kù)來進(jìn)行MongoDB的查詢操作,本文就來介紹一下Node.js中MongoDB查詢數(shù)據(jù)的方法,感興趣的可以了解一下2023-12-12