我的数据库是DigitalOcean,我正在尝试在我的节点应用程序中连接它。
我发现了一个名为tunnel-ssh
的npm但是无法连接到它。我的代码如下。
它表示数据库连接成功,但是当我执行console.log(mongoose)
时,它会将主机和主机显示为空。
如果我console.log(mongoose)
,console.log("DB connection successful");
之后会显示主持人。
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");
});
});
答案 0 :(得分:1)
这是工作代码:
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");
});
});
答案 1 :(得分:0)
您的端口不匹配。您有dstPort: 27010
,但您的连接字符串为'mongodb://127.0.0.1:27017/mysuperdb'
。一个或另一个需要纠正。