2014-01-16 59 views
4

我连接到不是本地主机的mongo服务器。我正在使用猫鼬。 而在某些时刻,我需要与蒙戈本地连接驱动器,所以我做喜欢:mongoose.mongo.MongoClient.connect()是否在没有mongo shell的情况下工作?

mongoose.mongo.MongoClient.connect(uri, function (err, conn) {}); 

conn对象是null

最近,我改变了服务器的结构,现在所有蒙戈数据库是远程的,和我的新节点的机器我没有安装在所有蒙戈贝壳......在首先是工作的罚款和连接URI是:

mongodb://x.x.x.x:27017/database,mongodb://y.y.y.y,mongodb://z.z.z.z 

其中x.x.x.x:27017是主要的,经过一段时间由于初始小学的休息,新的小学被选举,现在我开始与相同的uri,但连接对象是null,我不知道为什么......

有没有人有类似的问题?或者可能的解决方案或想法....

+1

'Mongoose ODM'(或ny MongoDB驱动程序)不依赖'mongo' shell进行连接。驱动程序使用[MongoDB有线协议](http://docs.mongodb.org/meta-driver/latest/legacy/mongodbwire-wireless)直接与'mongod'服务器(或'mongos',用于分片群集)交换消息。协议/)。我建议尝试从你计算机上的'mongo' shell(或者你正在运行Mongoose代码的地方)连接,看看是否存在一个普遍的连接问题。有可能您的远程'mongod'实例阻止了通过防火墙或'bind_ip'指令的连接。 – Stennie

+0

解决方案是连接uri的MongoClient是不正确的......我用的是和我用在猫鼬中一样的uri,但是正确的是这个:'mongodb:// xxxx:27017,yyyy:27017,zzzz:27017/database' – Nenad

回答

2

连接URI是错误的:

代替:

mongodb://x.x.x.x:27017/database,mongodb://y.y.y.y,mongodb://z.z.z.z,{options} 

为本地驱动程序MongoClient我应该使用:

mongodb://x.x.x.x:27017,y.y.y.y:27017,z.z.z.z:27017/database?opt1=o1&opt2=o2 

这是我被发现这种解决方案: MongoClient.connect

相关问题