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

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

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

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);
  //查詢到匹配用戶名的信息,但相應(yīng)的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);
    //查詢到匹配用戶名的信息,但相應(yīng)的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é)

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

相關(guān)文章

  • 詳解nodejs內(nèi)置模塊

    詳解nodejs內(nèi)置模塊

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

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

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

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

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

    Google官方支持的NodeJS訪問API,提供后臺登錄授權(quán)

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

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

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

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

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

    在Node.js應(yīng)用中使用Redis的方法簡介

    這篇文章主要介紹了在Node.js應(yīng)用中使用Redis的方法,最簡單的數(shù)據(jù)讀寫操作相關(guān),需要的朋友可以參考下
    2015-06-06
  • nodejs簡單實現(xiàn)操作arduino

    nodejs簡單實現(xiàn)操作arduino

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

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

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

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

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

最新評論

恩平市| 霍山县| 喀喇沁旗| 禄丰县| 兴国县| 深泽县| 平和县| 晋宁县| 涟源市| 宁晋县| 佛山市| 永平县| 霍邱县| 大余县| 南昌县| 禄丰县| 武冈市| 桂林市| 佳木斯市| 兴业县| 金阳县| 木兰县| 怀化市| 中牟县| 鄢陵县| 兴城市| 盱眙县| 丰都县| 思茅市| 改则县| 行唐县| 溧水县| 旅游| 新绛县| 东光县| 和政县| 淮阳县| 健康| 万州区| 东莞市| 府谷县|