然后我想说,我把mysql写在了user.js模块里面,然后我在server.js里想要获取user.js导出的user模块中的内容,但是本来就异步,再用模块就老式拿不到我想要的值,每次值拿了为undefined,数据库还没开始。郁闷。。。
比如以前的代码这样:
server.js
app.get('/',function(req,res){ //主页面 console.log("server.js--主页面请求") ; var length = user.findUser() ; console.log("server.js--" + length) ; //undefined
console.log("server.js--" + user.personLength) ; //undefined
}
user.js
mydatabase.query( findUserQuery, function(err,result){ console.log("user.js--" + result[0].length ) ; user.personLength = result[0].length ; //用user模块导出用户个数length return result[0].length ; //用user函数返回值返回length }
好吧,那么这个nodejs的异步就搞死我了。
解决: 我现在用的Async模块进行异步的处理。
1. 导入 npm install Async --save
2. 在js文件加入
var async = require('async') ;
修改的js:
sever.js
user.findUser = function(){
return function(){ //起作用,在server.js中产生效果 return user.personLength ; } }
user.js
user.findUser = function(){async.series([
服务器开启: 8080
server.js--function (){ //字符串----
return user.personLength ;
}
server.js--
user.js--人数:12
"user.js--查询用户结束"
server.js
app.get('/',function(req,res){ //主页面 // console.log("server.js--主页面请求") ; async.waterfall([ //查询 function(callback){ mydatabase.query( user.findUserQuery, function(err,result){ var resu = result.length ; callback(err,resu) ; } ) ; } ],function(err,personNumber){ if(err) console.log(err ) ; else{ console.log( "server.js-- " +personNumber) ; //server.js --12 res.render('./pages/index',{ title: '未登录' }) ; } }) }) ;
user.js
var user = { findUserQuery: 'SELECT * FROM ' +userTable , insertUserQuery: 'INSERT INTO ' +userTable +' (NAME,PASSWORD,MINORITY) VALUES (?,?,?)' , searchUserQuery: 'SELECT * FROM ' +userTable + ' WHERE NAME=? AND PASSWORD=?' } ;
这样是能获取到数值的,但是不知道为什么 我不太爽------
虽然我直接换了mysql的地方,但是我还是不会放弃刚刚那样传值,等我休息休息再来!