2017-02-14 51 views
0

我有一个在Atlas MongoDB云集群上托管的mongodb数据库。我目前正在访问该数据库在我的Node.js应用程序中使用猫鼬:使用猫鼬和Fixie连接到mongodb(Heroku附加组件)

mongoose.connect("mongodb://user:[email protected]***.mongodb.net:***,cluster0-shard-00-01-***.mongodb.net:***,cluster0-shard-00-02-***.mongodb.net:***/admin?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin"); 

因为MongoDB的图集云有一个白名单,以及Heroku的不提供可能获得一个固定的IP地址,我的申请,我使用Fixie add-on。基本上Fixie充当出站流量的代理。

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

可以使用猫鼬完成吗?

mongoose.connect函数接受option parameter,但我找不到有关通过代理建立连接的任何选项。

回答

1

刚从Fixie的团队回复:

Fixie是一个HTTP/HTTPS代理,所以不会对低级别的TCP连接的工作就像你需要为你的MongoDB连接

当我问及使用SOCKS这种情况的可能性,他们的回答是:

它看起来像猫鼬本身并不支持SOCKS代理,并且不接受自定义套接字(这是MySQL和Postgres的节点数据库驱动程序如何支持它)。

很明显,在我的情况下,无法通过Fixie提供的代理解决方案(Heroku附加组件)使用猫鼬与MongoDB Atlas群集建立连接。

+1

我处于相同的情况(Heroku + Node/Express + Mongoose + MongoDB Atlas)。我知道的两个当前选项是1)允许MongoDB Atlas接受来自“0.0.0.0/0”(所有IP地址)的流量,或者2)获得具有静态IP选项的Heroku私人空间(需要它们企业版,这个传闻已经开始在1万美元/月以上)。它看起来像Mongoose的'node-mongodb-native/connection'驱动程序是它需要接受自定义套接字连接的地方。 – Pete