Node.js模块导出“预加载”

时间:2019-02-25 14:21:19

标签: 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.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文件?

1 个答案:

答案 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);
        });
    });
},
相关问题