使用nodejs連接mySQL寫接口全過(guò)程(增刪改查)
前言
提示:請(qǐng)先建好mySQL數(shù)據(jù)庫(kù),本案例所用node版本為16.20.0:
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、navicat建立鏈接
文件-新建鏈接-MySQL
默認(rèn)端口為3306,連接名自定,密碼為安裝MySQL設(shè)置的數(shù)據(jù)庫(kù)密碼

二、建數(shù)據(jù)庫(kù)表
打開或新建一個(gè)數(shù)據(jù)庫(kù),建立一張新表,設(shè)計(jì)好字段后加入兩條測(cè)試數(shù)據(jù)
此處建立表名為userList(后面會(huì)用到)
字段:name, password, money, userId, sex, company, job

三、新建nodejs項(xiàng)目,建議直接使用Hbuilder編輯器快速創(chuàng)建
提示:請(qǐng)一定要確認(rèn)nodejs版本是否與npm版本有沖突
打開Hbuilder,文件-新建-項(xiàng)目,選擇Express項(xiàng)目

四、新建的項(xiàng)目在vscode打開后,進(jìn)入app.js
1、在項(xiàng)目?jī)?nèi)寫入啟動(dòng)項(xiàng)目的代碼
提示:?jiǎn)?dòng)代碼需寫在var app = express();代碼之后,否則報(bào)錯(cuò)
本案例將服務(wù)啟動(dòng)在2323端口
app.listen(2323, () => console.log('服務(wù)已啟動(dòng)在2323端口'))
2、文件夾右鍵,在集成終端中打開,輸入node app.js啟動(dòng)服務(wù)
啟動(dòng)成功后會(huì)在終端內(nèi)顯示你 打印的字樣,說(shuō)明啟動(dòng)成功
此時(shí)可寫一個(gè)簡(jiǎn)單的get接口來(lái)測(cè)試是否有問(wèn)題
app.get('/', (req, res) => {
res.json('helloWord')
})
寫入此代碼后,進(jìn)入localhost:2323/或者127.0.0.1:2323/,則返回helloWord

此時(shí)證明服務(wù)器沒(méi)問(wèn)題了
五、建立MySQL鏈接
因Hbuilder建立的express項(xiàng)目并沒(méi)有下載Mysql插件,所以需在終端自行下載
直接在終端運(yùn)行 npm install mysql 即可
下載成功后在router文件夾下index.js下建立鏈接,在此處編寫具體接口代碼
代碼示例:
const mysql = require('mysql');
// 鏈接數(shù)據(jù)庫(kù)
const conn = mysql.createConnection({
user:'root', //用戶名使用前面數(shù)據(jù)庫(kù)建立鏈接里的用戶名
password:'******', //密碼
port:3306,
host:'localhost', //主機(jī)(默認(rèn)都是local host)
database:'node' //數(shù)據(jù)庫(kù)名注意?。?!不是你新建連接起的連接名
})
// 測(cè)試連接
conn.connect(err=>{
console.log(err,'連接成功');
})
啟動(dòng)項(xiàng)目后如果返回null,鏈接成功,則鏈接數(shù)據(jù)庫(kù)成功
六、簡(jiǎn)單查詢列表
提示:此處開始用到sql語(yǔ)句,請(qǐng)?jiān)趎avicat運(yùn)行成功后再進(jìn)行編寫
代碼示例:
index.js
// 獲取用戶列表
router.get('/getList', (req, res, next) => {
// sql語(yǔ)句查詢列表所有數(shù)據(jù) SELECT * FROM 你數(shù)據(jù)庫(kù)的表名,我這里是userList
let sql = "SELECT * FROM userlist";
conn.query(sql, (err, r) => {
res.json({code: 200, data: r, msg: '成功'})
})
});
postman測(cè)試結(jié)果:

七、添加數(shù)據(jù)
代碼示例:
index.js
// 在index.js同目錄下創(chuàng)建新的interface.js文件,并在index.js最上面引入文件interface.js
var interface = require('./interface')
// 添加用戶接口
router.post('/addUser', (req, res) => {
interface.addUser(conn, req, res)
})
interface.js代碼示例: 此處設(shè)置了用戶名和密碼必須傳遞,否則失敗
此處使用了隨機(jī)生成id函數(shù)randomId
// 添加用戶
const addUser = (conn, req, res) => {
const params = req.body
// console.log(params);
const ret = {}
if (params.name == '') {
ret.code = 501
ret.data = null
ret.msg = '請(qǐng)傳遞用戶名'
res.json(ret)
return
} else if (params.password == '') {
ret.code = 501
ret.data = null
ret.msg = '請(qǐng)?jiān)O(shè)置用戶密碼'
res.json(ret)
return
} else {
conn.query(`INSERT INTO userlist(name,password,money,userid,sex,company,job)VALUES(
'${params.name}','${params.password}','${params.money}','${randomId()}','${params.sex}','${params.company}','${params.job}')`,
function (error, results, fields) {
if (error) {
ret.code = 500
ret.data = null
ret.msg = error.sqlMessage
return
}
if (results.length === 0) {
ret.code = 501
ret.message = '請(qǐng)傳遞正確的參數(shù)'
} else {
ret.code = 200
ret.data = null
ret.msg = '添加成功'
}
res.json(ret)
})
}
}
const randomId = function uuid(){
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0,
v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
//最后exports
exports.addUser = addUser
postman測(cè)試結(jié)果:

此時(shí)查看數(shù)據(jù)庫(kù)表,會(huì)多出一條剛剛添加的數(shù)據(jù)

八、修改數(shù)據(jù)
index.js代碼示例:
// 修改用戶接口
router.post('/updateUser', (req, res) => {
interface.updateUser(conn, req, res)
})
interface.js代碼示例: 傳遞參數(shù)比添加多了一個(gè)userId
// 修改用戶
const updateUser = (conn, req, res) => {
const params = req.body
// console.log(params);
const ret = {}
if (params.name == '') {
ret.code = 501
ret.data = null
ret.msg = '請(qǐng)傳遞用戶名'
res.json(ret)
return
} else if (params.password == '') {
ret.code = 501
ret.data = null
ret.msg = '請(qǐng)?jiān)O(shè)置用戶密碼'
res.json(ret)
return
} else if (params.userId == '') {
ret.code = 501
ret.data = null
ret.msg = '請(qǐng)傳遞用戶id'
res.json(ret)
return
} else {
conn.query(`UPDATE userlist SET
name="${params.name}",
password="${params.password}",
money="${params.money}",
sex="${params.sex}",
company="${params.company}",
job="${params.job}" WHERE userId="${params.userId}";`,
function (error, results, fields) {
if (error) {
ret.code = 500
ret.data = null
ret.msg = error.sqlMessage
return
}
if (results.length === 0) {
ret.code = 501
ret.message = '請(qǐng)傳遞正確的參數(shù)'
} else {
ret.code = 200
ret.data = null
ret.msg = '修改成功'
}
res.json(ret)
})
}
}
//最后exports
exports.updateUser = updateUser
postman測(cè)試結(jié)果:

修改成功后刷新數(shù)據(jù)庫(kù)表,對(duì)應(yīng)userId的數(shù)據(jù)會(huì)更改

九、刪除數(shù)據(jù)
index.js代碼示例:
// 刪除用戶接口
router.post('/deleteUser', (req, res) => {
interface.deleteUser(conn, req, res)
})
interface.js代碼示例: 參數(shù)僅傳userId
// 刪除用戶
const deleteUser = (conn, req, res) => {
const params = req.body
// console.log(params);
const ret = {}
if (params.userId == '') {
ret.code = 501
ret.data = null
ret.msg = '請(qǐng)傳遞用戶id'
res.json(ret)
return
} else {
conn.query(`DELETE FROM userlist WHERE userId="${params.userId}";`,
function (error, results, fields) {
// console.log(error);
if (error) {
ret.code = 500
ret.data = null
ret.msg = error.sqlMessage
return
}
if (results.length === 0) {
ret.code = 501
ret.message = '請(qǐng)傳遞正確的參數(shù)'
} else {
ret.code = 200
ret.data = null
ret.msg = '刪除成功'
}
res.json(ret)
})
}
}
//最后exports
exports.deleteUser = deleteUser
postman測(cè)試結(jié)果:刪除剛剛修改的那一條

成功后刷新數(shù)據(jù)庫(kù)表,剛剛那條數(shù)據(jù)發(fā)現(xiàn)已刪除

總結(jié)
本人nodejs僅還在學(xué)習(xí)階段,希望能對(duì)學(xué)習(xí)nodejs的小伙伴有所幫助!
到此這篇關(guān)于使用nodejs連接mySQL寫接口(增刪改查)的文章就介紹到這了,更多相關(guān)nodejs連接mySQL寫接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
connect中間件session、cookie的使用方法分享
今天大象哥用了下connect的session和cookie,感覺(jué)還挺好用的,分享一下(里面坑挺多的,文檔寫的太模糊了,費(fèi)了哥不少時(shí)間)。2014-06-06
WebSocket+node.js創(chuàng)建即時(shí)通信的Web聊天服務(wù)器
這篇文章主要為大家詳細(xì)介紹了WebSocket+node.js創(chuàng)建即時(shí)通信的Web聊天服務(wù)器的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-08-08
async/await優(yōu)雅的錯(cuò)誤處理方法總結(jié)
這篇文章主要給大家介紹了關(guān)于async/await優(yōu)雅的錯(cuò)誤處理方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01
在Node.js中處理Promise中錯(cuò)誤的示例代碼
在現(xiàn)代JavaScript開發(fā)中,尤其在Node.js環(huán)境中,Promise已成為處理異步操作的重要方式,然而,Promise的錯(cuò)誤處理卻常常讓開發(fā)者感到困惑,在這篇文章中,我們將深入探討如何在Node.js中處理Promise中的錯(cuò)誤,提供多個(gè)示例代碼,以便于理解和實(shí)踐,需要的朋友可以參考下2024-09-09

