【发布时间】:2021-05-10 00:32:46
【问题描述】:
我不明白如何通过 ssh 创建 mysql 连接并将其导出以从另一个文件访问。 这是我的 database.js 文件,这里我创建了 ssh 隧道。我需要从我的控制器访问 conn 变量。
const mysql = require("mysql2");
const { Client } = require("ssh2");
const { database, sshConfig, forwardConfig } = require("./keys");
// create an instance of SSH Client
const sshClient = new Client();
const connection = new Promise((resolve, reject) => {
sshClient
.on("ready", () => {
sshClient.forwardOut(
forwardConfig.srcHost,
forwardConfig.srcPort,
forwardConfig.dstHost,
forwardConfig.dstPort,
(err, stream) => {
if (err) reject(err);
const updatedDbServer = {
...database,
stream,
};
var conn = mysql.createConnection(updatedDbServer);
conn.connect(function (err) {
if (err) {
reject(err);
} else {
resolve(conn);
}
});
}
);
})
.connect(sshConfig);
});
module.exports = connection;
但是当我在我的 controller.js 文件中使用连接时,显示“TypeError: connection.query is not a function”
const connection = require("../db/database");
function getUsers(req, res) {
try {
let sqlQuery = `Select * from sUsers`;
console.log(connection);
connection().then((conn) => {
// query database
conn.query(sqlQuery, (error, results) => {
if (error) {
console.log(error);
return;
}
res.json({
ok: true,
results,
});
});
});
} catch (err) {
console.log(`Error1: ${err}`);
return res.status(400).json({
ok: false,
err,
});
}
}
【问题讨论】: