Tunnel-SSH не соединяется с сервером успешно в приложении узла - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь подключиться к облачному серверу, который запускает мою MongoDB с моей локальной машины. Я использую tunnel-ssh в создаваемом мною приложении Node.js, однако у меня, похоже, много проблем, и я не до конца понимаю, что происходит.

Проблемы

  1. Я не на 100% уверен, что успешно подключился к серверу. Там нет ошибки, однако, когда я console.log(server) он говорит _connections: 0,. смотрите полный журнал ниже.
  2. Если я подключаюсь и затем пытаюсь запустить функцию getDataFromMongoDB, она возвращает ошибку, EADDRINUSE: адрес уже используется 127.0.0.1:27000.

У меня естьпытался обернуть голову вокруг этого весь день, и я никуда не денусь. Пожалуйста, помогите.

Ошибка 1 - Подключается ли сервер

Server {
  _events:
   [Object: null prototype] { connection: [Function], close: [Function] },
  _eventsCount: 2,
  _maxListeners: undefined,
  _connections: 0,
  _handle:
   TCP {
     reading: false,
     onread: null,
     onconnection: [Function: onconnection],
     [Symbol(owner)]: [Circular] },
  _usingWorkers: false,
  _workers: [],
  _unref: false,
  allowHalfOpen: false,
  pauseOnConnect: false,
  _connectionKey: '4:127.0.0.1:27017',
  [Symbol(asyncId)]: 7 }

Код

var config = {
  username: "root",
  Password: "password on the server",
  host: "server IP address",
  port: 22,
  dstHost: "127.0.0.1",
  dstPort: 27017,
  localHost: "127.0.0.1",
  localPort: 27000
};

var tnl = tunnel(config, function(error, tnl) {
  if (error) {
    console.log(error);
  }

  // yourClient.connect();
  // yourClient.disconnect();
  console.log(tnl);
  getDataFromMongoDB();
});

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

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