这在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.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'));
代码运行时,输出“ undefined”,然后输出“ Connected!”。建立数据库连接后。即使我在console.log
上执行result[0].id
,它也会输出1,这是正确的ID ...
问题::如何在调用函数之前先加载mysql.js文件?
答案 0 :(得分:1)
您需要等待响应,因为它具有异步功能。
尝试使用回调或Promise。
回调示例:
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);
});
});
},