国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 15:41:56
字體:
來源:轉載
供稿:網友

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');};            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 丹江口市| 句容市| 建昌县| 布拖县| 平乐县| 仁化县| 新民市| 新营市| 昆明市| 永靖县| 昌图县| 芷江| 临沧市| 武鸣县| 龙南县| 双江| 章丘市| 渝中区| 普兰店市| 涿鹿县| 息烽县| 诏安县| 玛纳斯县| 太康县| 颍上县| 崇阳县| 镇巴县| 长乐市| 大姚县| 镇江市| 富裕县| 乌兰县| 北宁市| 华安县| 崇礼县| 稻城县| 天气| 巴彦淖尔市| 招远市| 大竹县| 呈贡县|