Node.js db.query不是函数



我正在使用Node.js和Express,我想在AWS EC2上查询MySQL数据库。

我已经在db_connection.js文件中创建了与数据库的连接,并尝试导出连接(db(,以便在其他js文件中使用db.query((。我已经确认连接正在工作(在控制台中显示"Connected"(,当我在db_connection.js中将db.query((放在db.connect((之后时,它就工作了。

问题是,当我在其他文件(例如timesheets.js(中使用db.query((时,我会收到";类型错误:db.query不是一个函数"错误

有人能告诉我怎么解决这个问题吗?非常感谢。

db_connection.js

let mysql = require('mysql2');
let Client = require('ssh2').Client;
let ssh = new Client();
process.on('uncaughtException', function (error) {
console.log(error.stack);
});
ssh.on('ready', function () {
ssh.forwardOut(
'127.0.0.1',
12345,
'127.0.0.1',
3306,
function (err, stream) {
if (err) {
console.error('forwardOut Error: ' + err);
return;
}
console.log('forwardOut: ready!');
let db = mysql.createConnection({
user: 'user',
password: 'password',
database: 'database',
stream: stream
});
db.connect(function (err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}
console.log('Connected');
module.exports = db;
});
});
}).connect({
host: 'xxx.xxx.xxx.xxx',
user: 'user',
privateKey: require('fs').readFileSync('xxx.pem'),
port: 22
});

时间表.js

let express = require('express');
let router = express.Router();
let db=require('../db_connection');
router.get('/mytimetable', function(req, res, next) {
let sql='Select * FROM timetables T, courses C, classoptions O WHERE T.classoptid = O.classoptid AND O.cid = C.cid ORDER BY C.cid, O.classopttitle';
db.query(sql, function (err, data, fields) {
if (err) throw err;
res.render('timetable', { title: 'Timetable', timetableData: data});
});
});
module.exports = router;

我使用了buithenquiet提供的链接中建议的多重回调方式。错误消息不再显示,并且查询已正确执行。

最新更新