CNode

关于module.exports的问题

问答
Zzimulili发布于10 年前最后回复10 年前4 回复9613 浏览0 收藏
      • 我先写了一个demoModule.js文件*代码如下**
  • var mysql = require('../node_modules/mysql');
  • connection = mysql.createConnection({
  • host: 'localhost',
    
  • user: 'root',
    
  • password: '****',
    
  • database:'node',
    
  • port: 3306
    
  • });
  • module.exports.select = function(date){
  • connection.query(date,function(err,res1){
    
  •     if (err) {
    
  •   	  console.log('err');
    
  •     } else {
    
  •   	  console.log(res1);
    
  •     }
    
  •   	return res1;
    
  •     });
    
  • connection.end();
    
  • }

我用另一个js调用demoModule.js

  • var sql = require('./modules/demoModule');
  • var res = sql.select('select * from user');
  • console.log('res:'+res);

结果: res:undefined [ RowDataPacket { id: 1, name: 'zimu', password: '0.0' } ]

我想问为什么先打印了res,而不是先得到查询结果,再打印res; 我知道这应该是异步的问题,但不知道怎么解决,求帮助,thanks

查看回复

回复 (4)

J
jingsam#1·10 年前
sql.select(‘select * from user’, function(err, result){
  console.log(result)
})
J
jingsam#2·10 年前

还有你的这个函数写得错误百出:

module.exports.select = function(date){
connection.query(date,function(err,res1){
  if (err) {
	  console.log('err');
  } else {
	  console.log(res1);
  }
	return res1;
  });
connection.end();
}
Z
zimulili#3·10 年前
引用 jingsam还有你的这个函数写得错误百出:

@jingsam 懂了,非常感谢

S
SinalVee#4·10 年前
module.exports.select = function (query, callback) {
	connection.query(query, function (err, data) {
		connection.end();
		callback(err, data);
	});	
}
var sql = require('./modules/demoModule');
var res = sql.select('select * from user', function (err, data) {
	if (err) {
		console.error(err);
	} else {
		console.log('res: ' + data);
	}
});
参与回复
登录后即可参与回复。登录