这在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'));
当代码运行时,它会输出"未定义",然后"连接!"输出。建立数据库连接后。即使我在result[0].id
上进行console.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);
});
});
},