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

Bru*_*ral 6 proxy heroku mongoose mongodb node.js

我在 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函数接受一个选项参数,但我找不到关于通过代理建立连接的任何选项。

Bru*_*ral 9

刚刚收到 Fixie 团队的回复:

Fixie 是一个 http/https 代理,因此它不适用于像 mongodb 连接所需的较低级别的 TCP 连接

当我询问在这种情况下使用 SOCKS 的可能性时,他们回答说:

看起来 mongoose 本身不支持袜子代理,也不接受自定义套接字(这是 MySQL 和 Postgres 的 Node 数据库驱动程序支持它的方式)。

显然,就我而言,无法通过 Fixie(Heroku 附加组件)提供的代理解决方案使用猫鼬建立与 MongoDB Atlas 集群的连接。

  • 我处于同样的情况(Heroku + Node/Express + Mongoose + MongoDB Atlas)。我知道的两个当前选项是 1) 允许 MongoDB Atlas 接受来自“0.0.0.0/0”(所有 IP 地址)的流量,或 2) 获得一个 Heroku 私有空间,它有一个静态 IP 选项(需要他们的企业版,传闻起价 > 1000 美元/月)。看起来 Mongoose 的 `node-mongodb-native/connection` 驱动程序是它需要接受自定义套接字连接的地方。 (3认同)