Javascript Node.js模块导出";“预加载”;
这是一个mysql.js文件:Javascript Node.js模块导出";“预加载”;,javascript,mysql,node.js,Javascript,Mysql,Node.js,这是一个mysql.js文件: const mysql = require('mysql'); const config = require('./config.json'); const con = mysql.createConnection({ host: config.dbhost, user: config.dbuser, password: config.dbpass, database: config.dbname, }); module.exp
const mysql = require('mysql');
const config = require('./config.json');
const con = mysql.createConnection({
host: config.dbhost,
user: config.dbuser,
password: config.dbpass,
database: config.dbname,
});
module.exports = {
findUser: function(email) {
const sql = 'SELECT * FROM users WHERE email = ' + mysql.escape(email);
con.connect(function(err) {
if (err) throw err;
console.log('Connected!');
con.query(sql, function(err, result) {
if (err) throw err;
return result[0].id;
});
});
},
};
然后在我的index.js文件中有以下内容:
const mysql = require('./mysql.js');
console.log(mysql.findUser('example@example.test'));
当代码运行时,它会在db连接完成后输出“未定义”,然后输出“已连接”。即使我在结果[0].id上执行控制台.log
,它也会输出1,这是正确的id
问题:调用函数之前,如何先加载mysql.js文件?您需要等待响应,因为它是一个异步函数。
尝试使用回调或承诺。
回调示例:
mysql.findUser('example@example.test', function(res)){ console.log(res)});
module.exports = {
findUser: function(email, callback) {
const sql = 'SELECT * FROM users WHERE email = ' + mysql.escape(email);
con.connect(function(err) {
if (err) throw err;
console.log('Connected!');
con.query(sql, function(err, result) {
if (err) throw err;
callback(result[0].id);
});
});
},
您是否也通过回调更改了mysql文件?是的,抱歉,没有看到更改,它工作正常!谢谢