Подключитесь к mongodb через ssh туннель - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь получить доступ к своей базе данных MongoDB, размещенной снаружи на сервере, используя tunnel-ssh внутри функции. Я не получаю никаких ошибок, когда я запускаю функцию туннеля, она, кажется, останавливается, когда она достигает const client = await connectToMongodb(client2);, когда функция getDataFromMongoDB запущена. Когда я запускаю это локально без SSH, все работает нормально, поэтому я предполагаю, что это связано с компонентом туннеля SSH. Может кто-нибудь, пожалуйста, скажите мне, что я делаю не так здесь.

var config = {
  username: "myusername",
  privateKey: require("fs").readFileSync("../id_rsa"),
  host: "207.138.88.161",
  port: 22,
  dstHost: "11.12.97.2",
  dstPort: 27017,
  localHost: "127.0.0.1",
  localPort: 27000
};

tunnel(config, function(error, server) {
  //....
  if (error) {
    console.log(error);
  }
  console.log(server);

  getDataFromMongoDB();
});

async function getDataFromMongoDB(page) {
  const MongoClient = require("mongodb").MongoClient;
  const uri = "mongodb://username:password@11.12.97.2:27017/mydatabase";
  const client2 = new MongoClient(uri, { useNewUrlParser: true });
  const client = await connectToMongodb(client2);
  const collection = client.db("mydatabase").collection("jobs");
  const jobs = await collection.find().toArray();
  client.close();
  client2.close();
  console.log(jobs);
}

function connectToMongodb(client) {
  return new Promise((resolve, reject) => {
    client.connect(function(err) {
      return resolve(client);
    });
  });
}
...