Mi base de datos está con DigitalOcean y estoy tratando de conectarme a ella en mi aplicación de nodo.
Encontré un npm llamado tunnel-ssh pero tengo problemas para conectarme. Mi código está abajo.
Dice que la conexión a la base de datos fue exitosa, sin embargo, cuando hago una console.log(mongoose) , muestra el host y el host como nulos.
Si hago console.log(mongoose) , después de console.log("DB connection successful"); entonces me muestra el anfitrión.
var tunnel = require('tunnel-ssh'); var config = { agent : 'myuser', host: 'xxx:xxx:xxx:xxx' agent : process.env.SSH_AUTH_SOCK, privateKey:require('fs').readFileSync('id_rsa'), port:22, dstPort:27010, keepAlive: true }; var server = tunnel(config, function (error, server) { if(error){ console.log("SSH connection error: " + error); } mongoose.connect('mongodb://127.0.0.1:27017/mysuperdb'); var db = mongoose.connection; db.on('error', console.error.bind(console, 'DB connection error:')); db.once('open', function() { console.log("DB connection successful"); }); });Aquí está el código de trabajo:
var tunnel = require('tunnel-ssh'); var config = { username : 'myuser', host: 'xxx:xxx:xxx:xxx', privateKey:require('fs').readFileSync('id_rsa'), port:22, dstPort:27010, localPort: 2000 }; var server = tunnel(config, function (error, server) { if(error){ console.log("SSH connection error: " + error); } mongoose.connect('mongodb://127.0.0.1:2000/mysuperdb'); var db = mongoose.connection; db.on('error', console.error.bind(console, 'DB connection error:')); db.once('open', function() { console.log("DB connection successful"); }); });Tus puertos no coinciden. Tiene dstPort: 27010 pero su cadena de conexión es 'mongodb://127.0.0.1:27017/mysuperdb' . Uno u otro necesita ser corregido.