关于module.exports的问题
发布于 8 年前 作者 zimulili 9074 次浏览 来自 问答
      • 我先写了一个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 回复
sql.select(‘select * from user’, function(err, result){
  console.log(result)
})

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

module.exports.select = function(date){
connection.query(date,function(err,res1){
  if (err) {
	  console.log('err');
  } else {
	  console.log(res1);
  }
	return res1;
  });
connection.end();
}

@jingsam 懂了,非常感谢

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);
	}
});
回到顶部