相关疑难解决方法(0)

使用 mongoose 和 Fixie(Heroku 附加组件)连接到 mongodb

我在 Atlas MongoDB Cloud 集群上托管了一个 mongodb 数据库。我目前正在使用 mongoose 访问我的 node.js 应用程序中的数据库:

mongoose.connect("mongodb://user:pw@cluster0-shard-00-00-***.mongodb.net:***,cluster0-shard-00-01-***.mongodb.net:***,cluster0-shard-00-02-***.mongodb.net:***/admin?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin");
Run Code Online (Sandbox Code Playgroud)

因为 Atlas MongoDB Cloud 有一个白名单,而 Heroku 不提供为我的应用程序获取固定 IP 地址的可能性,所以我使用Fixie 附加组件。基本上,Fixie 充当出站流量的代理。

这样,我可以通过 HTTP 请求资源,这些资源通过 Fixie 提供的固定 IP 地址进行隧道传输。但我需要的是使用 Fixie 的代理连接到 Atlas Cloud 集群,以便从数据库中检索和修改数据。

可以用猫鼬来完成吗?

mongoose.connect函数接受一个选项参数,但我找不到关于通过代理建立连接的任何选项。

proxy heroku mongoose mongodb node.js

6
推荐指数
1
解决办法
1829
查看次数

Node.js使用Mongoose对MongoDB进行SSH隧道连接

我有两个Mongo DB.一个用于我的开发环境,一个用于生产,如我在Robomongo设置中所见:

两个Mongo DB

生产数据库通过SSH隧道连接到我的数字海洋虚拟服务器,如此处所示(具体情况已经明显改变).连接到我的生产网站/从我的生产网站连接时此设置正常:

SSH隧道设置

我现在正在开发一个不同/相关的项目,需要将我的本地机器连接到我的生产数据库,所以我假设我需要使用像tunnel-ssh这样的东西来完成它.我已经按照这个答案作为例子,但是我要么正在Error: (SSH) Channel open failure: open failed连接到我的Dev db(当我使用27017作为我的dstHost/dstPort/localPort时).我一定在考虑这个错误,或者我对我的配置感到愚蠢.我是公认的Mongo/Mongoose新手,所以两者都是可能的.有什么建议?

var fs = require("fs");
var mongoose = require('mongoose');
var tunnel = require('tunnel-ssh');

//===== db connection =====

var config = {
    username:'my.username',
    host:'my.ip.address',
    agent : process.env.SSH_AUTH_SOCK,
    privateKey:require('fs').readFileSync('/Users/myusername/.ssh/id_rsa'),
    port:22,
    dstHost:'mongodb://localhost:27000/mydbname',
    dstPort:27000,
    localHost:'127.0.0.1',
    password:'mypassword',
    localPort: 27000
};

var server = tunnel(config, function (error, server) {
    if(error){
        console.log("SSH connection error: " + error);
    }
    mongoose.connect('mongodb://localhost:27000/mydbname');

    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'DB connection …
Run Code Online (Sandbox Code Playgroud)

ssh mongoose mongodb node.js

5
推荐指数
3
解决办法
8152
查看次数

如何使用 Node.js 建立到 MongoDB 数据库的 SSH 隧道连接

我的凭据与 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)

ssh mongoose mongodb node.js ssh-tunnel

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

mongodb ×3

mongoose ×3

node.js ×3

ssh ×2

heroku ×1

proxy ×1

ssh-tunnel ×1