我有一个在 heroku 上托管的 node.js express api。它通过 mongoose 连接到 mongodb atlas 如下
mongoose.connect(
`mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PWD}@${process.env.MONGO_HOST}/${process.env.MONGO_DEFAULT_DB}?retryWrites=true`, {
useNewUrlParser: true,
autoReconnect: true,
keepAlive: 300000,
connectTimeoutMS: 300000,
socketTimeoutMS: 300000
}
)
.then(result => {
console.log('Connected and listening to requests!');
app.listen(process.env.PORT || 3000);
.catch(err => console.log(err));
Run Code Online (Sandbox Code Playgroud)
我想对 Heroku 应用程序使用 Atlas MongoDB Cloud 的白名单,而不是向所有人开放访问。Heroku 没有固定的 IP 地址,但通过名为Fixie Socks的附加组件使它们成为可能,该附加组件充当出站流量的代理。
如何使用此附加组件来使连接正常工作?文档给出了几个关于如何连接其他服务和数据库的示例,但在 mongodb 上没有帮助。所有示例都使用 FIXIE_SOCKS_HOST,其中包含 SOCKSV5 代理 URL、用户、密码和端口,但我不知道如何将它与 mongoose.connect 方法结合使用。
我的凭据与 Robomongo 完美配合,但我无法与 node.js 建立连接
我曾尝试使用 ssh2 和 tunnel-ssh npm 模块建立连接,但两次都失败了。
- mongo 连接不需要密码
- ssh 连接是使用 pem 密钥建立的
这是我在 ssh2 模块中使用的代码,我可以正确建立隧道,但 mongo 连接失败
var Client = require('ssh2').Client;
var conn = new Client();
conn.on('ready', function() {
console.log('Client :: ready');
//mongo connection
mongoose.connect('mongodb://localhost:27000/');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log("database connection established");
var users = db.collection('user');
var getallUsers = function (date, callback){
users.find({}).toArray(function(err,data){
callback(data);
})
};
getallUsers(null, function (data){
console.log('data :'+ data);
});
});
//end of …Run Code Online (Sandbox Code Playgroud) 我按照这个mongoose文件在这里输入链接描述
mongoose.connect('mongodb://localhost/waterDB');
Run Code Online (Sandbox Code Playgroud)
使用这个,我可以连接本地机器waterDBmongoDB DataBase
我的个人机器本地IP: 192.168.1.5
我的服务器机器本地IP: 192.168.1.100
两台机器都有waterDBDataBase.两个DB都没有用户名和密码
我想连接waterDB我的个人机器内的服务器机器.
根据这个 : mongoose.connect('mongodb://username:password@host:port/database?options...');
我尝试: mongoose.connect('mongodb://192.168.1.100:27017/waterDB');
但,
MongoError: failed to connect to server [192.168.1.100:27017] on first connect
at null.<anonymous> (/home/water/node_modules/mongodb-core/lib/topologies/server.js:313:35)
at emitOne (events.js:77:13)
at emit (events.js:169:7)
..........
Run Code Online (Sandbox Code Playgroud)
任何错误的解决方案?
谢谢 (@_@)