最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs同步調用獲取mysql數據時遇到的大坑

 更新時間:2019年03月02日 11:44:52   作者:NiceNemo  
今天小編就為大家分享一篇關于nodejs同步調用獲取mysql數據時遇到的大坑,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

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

錯誤示范

獲取數據庫中的數據函數

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: "數據庫出錯"};
  }
}
var getUser = function(name){
  return _getUser(name);
}

獲取結果處理事件

//獲取post上來的 data數據中 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');
};

正確示范

獲取數據庫中的數據函數

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: "數據庫出錯"};
  }
}
var getUser = function(name, callback){
  return _getUser(name, callback);
}

獲取結果處理事件

//獲取post上來的 data數據中 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');
};

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

相關文章

  • 詳解nodejs內置模塊

    詳解nodejs內置模塊

    這篇文章主要介紹了nodejs內置模塊,對nodejs感興趣的同學,可以參考下
    2021-05-05
  • node使用Git Bash作為命令行終端示例

    node使用Git Bash作為命令行終端示例

    這篇文章主要為大家介紹了node使用Git Bash作為命令行終端示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 使用命令行升級Node.js的版本的操作指南

    使用命令行升級Node.js的版本的操作指南

    這篇文章主要給大家介紹了關于如何使用命令行升級Node.js的版本的操作指南,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧
    2023-11-11
  • Google官方支持的NodeJS訪問API,提供后臺登錄授權

    Google官方支持的NodeJS訪問API,提供后臺登錄授權

    Google官方支持的NodeJS集成客戶端,用以訪問Google APIs, 支持OAuth 2.0授信及登錄認證。登錄以后即可在后臺訪問例如 Google Drive(云存儲), Google Analytics, Gmail等服務。
    2014-07-07
  • Node.js + express實現上傳大文件的方法分析【圖片、文本文件】

    Node.js + express實現上傳大文件的方法分析【圖片、文本文件】

    這篇文章主要介紹了Node.js + express實現上傳大文件的方法,結合實例形式分析了Node.js + express針對圖片、文本文件上傳操作實現方法及相關操作注意事項,需要的朋友可以參考下
    2019-03-03
  • node基于async/await對mysql進行封裝

    node基于async/await對mysql進行封裝

    這篇文章主要介紹了node基于async/await對mysql進行封裝,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,,需要的朋友可以參考下
    2019-06-06
  • 在Node.js應用中使用Redis的方法簡介

    在Node.js應用中使用Redis的方法簡介

    這篇文章主要介紹了在Node.js應用中使用Redis的方法,最簡單的數據讀寫操作相關,需要的朋友可以參考下
    2015-06-06
  • nodejs簡單實現操作arduino

    nodejs簡單實現操作arduino

    本文給大家分享的是使用nodejs來驅動arduino,主要是基于cylonjs 和 gort,有需要的小伙伴可以參考下
    2016-09-09
  • node.js學習之事件模塊Events的使用示例

    node.js學習之事件模塊Events的使用示例

    Nodejs中不存在瀏覽器中冒泡,捕獲這些行為,Nodejs中實現了events這個模塊,Nodejs中大多數模塊都集成了這個模塊,所以events是Nodejs中最重要的一個模塊。這篇文章主要給大家介紹了關于node.js學習教程之事件模塊Events的相關資料,需要的朋友可以參考下。
    2017-09-09
  • nodejs npm install全局安裝和本地安裝的區(qū)別

    nodejs npm install全局安裝和本地安裝的區(qū)別

    這篇文章主要介紹了nodejs npm install 全局安裝和非全局安裝的區(qū)別,即帶參數-g和不帶參數-g安裝的區(qū)別,需要的朋友可以參考下
    2014-06-06

最新評論

舒兰市| 淮南市| 金塔县| 德化县| 左权县| 高雄县| 顺昌县| 林州市| 晴隆县| 云龙县| 乌恰县| 阿拉尔市| 英吉沙县| 密山市| 白水县| 健康| 普洱| 麻江县| 遂川县| 石林| 长寿区| 咸宁市| 罗甸县| 乳山市| 应城市| 孙吴县| 赫章县| 龙里县| 睢宁县| 崇左市| 娄底市| 库尔勒市| 拜城县| 郁南县| 靖安县| 甘泉县| 铜山县| 公安县| 南和县| 汶川县| 大宁县|