• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    nodejs同步調(diào)用獲取mysql數(shù)據(jù)時遇到的大坑

    來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:00:22
    文檔

    nodejs同步調(diào)用獲取mysql數(shù)據(jù)時遇到的大坑

    nodejs同步調(diào)用獲取mysql數(shù)據(jù)時遇到的大坑:mysql調(diào)用獲取數(shù)據(jù),只能是異步方式返回結(jié)果,不能同步獲取結(jié)果,因此,須在回調(diào)函數(shù)中編寫處理事件。期間看了下Aysnc.js,是用于多個要返回回調(diào)函數(shù)的事件,將這些事件有序的組織起來,最后只返回一個回調(diào)函數(shù),并沒有改變異步的本質(zhì),而是將多個異步整合為
    推薦度:
    導讀nodejs同步調(diào)用獲取mysql數(shù)據(jù)時遇到的大坑:mysql調(diào)用獲取數(shù)據(jù),只能是異步方式返回結(jié)果,不能同步獲取結(jié)果,因此,須在回調(diào)函數(shù)中編寫處理事件。期間看了下Aysnc.js,是用于多個要返回回調(diào)函數(shù)的事件,將這些事件有序的組織起來,最后只返回一個回調(diào)函數(shù),并沒有改變異步的本質(zhì),而是將多個異步整合為

    mysql調(diào)用獲取數(shù)據(jù),只能是異步方式返回結(jié)果,不能同步獲取結(jié)果,因此,須在回調(diào)函數(shù)中編寫處理事件。期間看了下Aysnc.js,是用于多個要返回回調(diào)函數(shù)的事件,將這些事件有序的組織起來,最后只返回一個回調(diào)函數(shù),并沒有改變異步的本質(zhì),而是將多個異步整合為一個異步,從而滿足寫程序的需求。

    錯誤示范

    獲取數(shù)據(jù)庫中的數(shù)據(jù)函數(shù)

    var _getUser = function(name) {
     var sql = "SELECT * FROM " + TABLE + " WHERE user_loginname='" + name + "'";
     connection.query(sql, function(err, results) {
     if(!err) {
     var res = hasUser(results);
     return res;
     }else {
     return error();
     }
     });
     function hasUser(results) {
     if(results.length == 0) {
     return {err: 1, msg: "此用戶名不存在"};
     }
     else {
     return results[0];
     }
     }
     function error() {
     return {err: 1, msg: "數(shù)據(jù)庫出錯"};
     }
    }
    var getUser = function(name){
     return _getUser(name);
    }

    獲取結(jié)果處理事件

    //獲取post上來的 data數(shù)據(jù)中 uname的值
    var uname = req.body.uname; 
    var User = getUser(uname);
    if(User.err){
     res.status(404)
     } else {
     var upwd = md5 (req.body.upwd);
     //查詢到匹配用戶名的信息,但相應的password屬性不匹配
     if(upwd != User.user_passwd){ 
     req.session.error = "密碼錯誤";
     res.send(404);
     // res.redirect("/login");
     }else{ 
     //信息匹配成功,則將此對象(匹配到的user) 賦給session.user 并返回成功 
     req.session.user = {name: uname, password: upwd};
     res.status(200).send("success")
     // res.send(200);
     // res.redirect("/home");
     }
     }
    // md5方式加密
    function md5 (text) {
     return crypto.createHash('md5').update(text).digest('hex');
    };

    正確示范

    獲取數(shù)據(jù)庫中的數(shù)據(jù)函數(shù)

    var _getUser = function(name, callback) {
     var sql = "SELECT * FROM " + TABLE + " WHERE user_loginname='" + name + "'";
     connection.query(sql, function(err, results) {
     if(!err) {
     var res = hasUser(results)
     callback(res);
     }else {
     callback(error());
     }
     });
     function hasUser(results) {
     if(results.length == 0) {
     return {err: 1, msg: "此用戶名不存在"};
     }
     else {
     return results[0];
     }
     }
     function error() {
     return {err: 1, msg: "數(shù)據(jù)庫出錯"};
     }
    }
    var getUser = function(name, callback){
     return _getUser(name, callback);
    }

    獲取結(jié)果處理事件

    //獲取post上來的 data數(shù)據(jù)中 uname的值
    var uname = req.body.uname; 
    getUser(uname, function(data){
     var User = data;
     if(User.err){
     res.status(404)
     } else {
     var upwd = md5 (req.body.upwd);
     //查詢到匹配用戶名的信息,但相應的password屬性不匹配
     if(upwd != User.user_passwd){ 
     req.session.error = "密碼錯誤";
     res.send(404);
     // res.redirect("/login");
     }else{ 
     //信息匹配成功,則將此對象(匹配到的user) 賦給session.user 并返回成功 
     req.session.user = {name: uname, password: upwd};
     res.status(200).send("success")
     // res.send(200);
     // res.redirect("/home");
     }
     }
    });
    // md5方式加密
    function md5 (text) {
     return crypto.createHash('md5').update(text).digest('hex');
    };

    總結(jié)

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    nodejs同步調(diào)用獲取mysql數(shù)據(jù)時遇到的大坑

    nodejs同步調(diào)用獲取mysql數(shù)據(jù)時遇到的大坑:mysql調(diào)用獲取數(shù)據(jù),只能是異步方式返回結(jié)果,不能同步獲取結(jié)果,因此,須在回調(diào)函數(shù)中編寫處理事件。期間看了下Aysnc.js,是用于多個要返回回調(diào)函數(shù)的事件,將這些事件有序的組織起來,最后只返回一個回調(diào)函數(shù),并沒有改變異步的本質(zhì),而是將多個異步整合為
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 精品国产自在在线在线观看| 99国产精品国产免费观看| 99国产精品无码| 久久99精品久久久久久水蜜桃| 国产亚洲欧美精品永久| 久久国产午夜精品一区二区三区| 国产亚洲福利精品一区| 欧洲成人午夜精品无码区久久| 精品亚洲一区二区三区在线观看 | 久久久久国产精品| 久久国产欧美日韩精品| 亚洲а∨天堂久久精品| 精品无码国产自产拍在线观看蜜| 午夜精品在线观看| 国产精品成人在线| 99re66热这里只有精品| 国内精品九九久久久精品| 亚洲精品无码久久久久去q| 香港三级精品三级在线专区 | 欧美精品免费专区在线观看| 国产精品V亚洲精品V日韩精品| 日本精品久久久久中文字幕8| 国产精品免费福利久久| 国产精品无码无需播放器| 热re99久久精品国99热| 欧洲成人午夜精品无码区久久| 无码精品人妻一区二区三区免费看 | 91精品国产福利在线观看| 国产精品视频一区二区三区四| 无码精品人妻一区二区三区影院 | 久久精品免费大片国产大片| 精品91自产拍在线观看 | 国产香蕉精品视频在| 国产精品分类视频分类一区| 国产成人A人亚洲精品无码| 国产精品亚洲片在线| 国产精品看高国产精品不卡| 国产69精品久久久久777| 99久久精品国内| 欧美日韩精品在线| 99久久www免费人成精品|