使用nodejs連接mySQL寫接口全過程(增刪改查)
前言
提示:請先建好mySQL數(shù)據(jù)庫,本案例所用node版本為16.20.0:
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、navicat建立鏈接
文件-新建鏈接-MySQL
默認端口為3306,連接名自定,密碼為安裝MySQL設(shè)置的數(shù)據(jù)庫密碼
二、建數(shù)據(jù)庫表
打開或新建一個數(shù)據(jù)庫,建立一張新表,設(shè)計好字段后加入兩條測試數(shù)據(jù)
此處建立表名為userList(后面會用到)
字段:name, password, money, userId, sex, company, job
三、新建nodejs項目,建議直接使用Hbuilder編輯器快速創(chuàng)建
提示:請一定要確認nodejs版本是否與npm版本有沖突
打開Hbuilder,文件-新建-項目,選擇Express項目
四、新建的項目在vscode打開后,進入app.js
1、在項目內(nèi)寫入啟動項目的代碼
提示:啟動代碼需寫在var app = express();代碼之后,否則報錯
本案例將服務(wù)啟動在2323端口
app.listen(2323, () => console.log('服務(wù)已啟動在2323端口'))
2、文件夾右鍵,在集成終端中打開,輸入node app.js啟動服務(wù)
啟動成功后會在終端內(nèi)顯示你 打印的字樣,說明啟動成功
此時可寫一個簡單的get接口來測試是否有問題
app.get('/', (req, res) => { res.json('helloWord') })
寫入此代碼后,進入localhost:2323/或者127.0.0.1:2323/,則返回helloWord
此時證明服務(wù)器沒問題了
五、建立MySQL鏈接
因Hbuilder建立的express項目并沒有下載Mysql插件,所以需在終端自行下載
直接在終端運行 npm install mysql 即可
下載成功后在router文件夾下index.js下建立鏈接,在此處編寫具體接口代碼
代碼示例:
const mysql = require('mysql'); // 鏈接數(shù)據(jù)庫 const conn = mysql.createConnection({ user:'root', //用戶名使用前面數(shù)據(jù)庫建立鏈接里的用戶名 password:'******', //密碼 port:3306, host:'localhost', //主機(默認都是local host) database:'node' //數(shù)據(jù)庫名注意?。。〔皇悄阈陆ㄟB接起的連接名 }) // 測試連接 conn.connect(err=>{ console.log(err,'連接成功'); })
啟動項目后如果返回null,鏈接成功,則鏈接數(shù)據(jù)庫成功
六、簡單查詢列表
提示:此處開始用到sql語句,請在navicat運行成功后再進行編寫
代碼示例:
index.js
// 獲取用戶列表 router.get('/getList', (req, res, next) => { // sql語句查詢列表所有數(shù)據(jù) SELECT * FROM 你數(shù)據(jù)庫的表名,我這里是userList let sql = "SELECT * FROM userlist"; conn.query(sql, (err, r) => { res.json({code: 200, data: r, msg: '成功'}) }) });
postman測試結(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è)置了用戶名和密碼必須傳遞,否則失敗
此處使用了隨機生成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 = '請傳遞用戶名' res.json(ret) return } else if (params.password == '') { ret.code = 501 ret.data = null ret.msg = '請設(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 = '請傳遞正確的參數(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測試結(jié)果:
此時查看數(shù)據(jù)庫表,會多出一條剛剛添加的數(shù)據(jù)
八、修改數(shù)據(jù)
index.js代碼示例:
// 修改用戶接口 router.post('/updateUser', (req, res) => { interface.updateUser(conn, req, res) })
interface.js代碼示例: 傳遞參數(shù)比添加多了一個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 = '請傳遞用戶名' res.json(ret) return } else if (params.password == '') { ret.code = 501 ret.data = null ret.msg = '請設(shè)置用戶密碼' res.json(ret) return } else if (params.userId == '') { ret.code = 501 ret.data = null ret.msg = '請傳遞用戶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 = '請傳遞正確的參數(shù)' } else { ret.code = 200 ret.data = null ret.msg = '修改成功' } res.json(ret) }) } } //最后exports exports.updateUser = updateUser
postman測試結(jié)果:
修改成功后刷新數(shù)據(jù)庫表,對應(yīng)userId的數(shù)據(jù)會更改
九、刪除數(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 = '請傳遞用戶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 = '請傳遞正確的參數(shù)' } else { ret.code = 200 ret.data = null ret.msg = '刪除成功' } res.json(ret) }) } } //最后exports exports.deleteUser = deleteUser
postman測試結(jié)果:刪除剛剛修改的那一條
成功后刷新數(shù)據(jù)庫表,剛剛那條數(shù)據(jù)發(fā)現(xiàn)已刪除
總結(jié)
本人nodejs僅還在學(xué)習(xí)階段,希望能對學(xué)習(xí)nodejs的小伙伴有所幫助!
到此這篇關(guān)于使用nodejs連接mySQL寫接口(增刪改查)的文章就介紹到這了,更多相關(guān)nodejs連接mySQL寫接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
connect中間件session、cookie的使用方法分享
今天大象哥用了下connect的session和cookie,感覺還挺好用的,分享一下(里面坑挺多的,文檔寫的太模糊了,費了哥不少時間)。2014-06-06WebSocket+node.js創(chuàng)建即時通信的Web聊天服務(wù)器
這篇文章主要為大家詳細介紹了WebSocket+node.js創(chuàng)建即時通信的Web聊天服務(wù)器的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-08-08async/await優(yōu)雅的錯誤處理方法總結(jié)
這篇文章主要給大家介紹了關(guān)于async/await優(yōu)雅的錯誤處理方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01