日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Node中使用mysql模块遇到的问题

發布時間:2024/4/15 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Node中使用mysql模块遇到的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  Node的mysql模塊,本人的感受就是不好用,各種報錯,各種坑,有一個問題困擾了我很久,也不知道是不是我使用的方式不對,不過后來用easymysql模塊解決了,我才深信這是一個坑。

問題描述:

  假設有這么一個數據表table,它有兩個字段index和name,在localhost:3000主頁有一個按鈕,上面寫著“更新”,當我點擊更新后會POST到localhost:3000/update,然后后臺連接數據庫進行更新操作每一條記錄的name為“gdt”,更新完畢后回到主頁,再重新按一下“更新”按鈕,就會報錯誤,如下:

“{ [Error: Cannot enqueue Query after invoking quit.] code: 'PROTOCOL_ENQUEUE_AFTER_QUIT', fatal: false }”

?

  下面代碼,省略了模塊的引入以及數據庫的連接操作,我使用的是異步流程控制Async來使得異步查詢變成同步查詢,在流程結束的最后connection會end,路由會重定向到localhost:3000,講道理的話當我重新按“更新”按鈕時會繼續進行更新操作,而不是報錯

exports.update = function(req, res) {//獲得需要所有記錄信息function getInfo() {return new Promise((resolve, reject) => {connection.query('SELECT `index`,`name` from table', function(err, result) {if (err) {console.log(err);} else {resolve(result);}})})}// 將每一項的名字更新為gdtfunction updateName(info) {return new Promise((resolve, reject) => {var index = info['index'];connection.query("UPDATE `table` SET `tableB`.`name` = 'gdt' WHERE `table`.`index` =?", index, function(err, result) {if (err) {console.log(err);} else {resolve('更新成功');}})})}async function update() {
?let?result?=?'';//篩選出在公屏發言出現的環球uid和其對應的indexvar getinfoResult = await getInfo();for (let i = 0; i < getinfoResult.length; i++) {var updateResult = await updateName(getinfoResult[i]);console.log(updateResult);}
return result?result:'success';}update().then(function(result) {console.log(result);//斷開數據庫連接connection.end();//回到主頁res.redirect('/');}) }

  這個問題我查閱了好多資料,問了好多人都沒有得到解決,后來改用了easymysql模塊就解決了,異步流程控制結束后頁面重定向到首頁,重新按下“更新”會執行更新操作,不會報錯!

  上面的代碼并沒有改成easymysql的語法,關于easymysql的用法可以參閱 https://github.com/aleafs/easymysql,不過還是建議Node項目結合像MongoDB這樣的NoSQL數據庫,要不是公司業務要求我是不會使用mysql的,囧~

?

轉載于:https://www.cnblogs.com/DTBelieve/p/5656277.html

總結

以上是生活随笔為你收集整理的Node中使用mysql模块遇到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。