【发布时间】:2019-05-21 09:07:57
【问题描述】:
我正在运行一个复制的 mongoDB,我可以使用 mongo 连接到集合中的主数据库没有问题:
bash-4.2$ mongo --port 25023
MongoDB shell version: 3.2.6
rs0:PRIMARY>
但是当像这样使用猫鼬时:
mongoose.connect('mongodb://127.0.0.1:25023/XXX', { useNewUrlParser: true });
我明白了:
XXX/node_modules/mongoose/lib/utils.js:452
throw err;
^
MongoError: not master and slaveOk=false
at queryCallback (/XXX/node_modules/mongodb-core/lib/cursor.js:247:25)
建议这样做:
mongodb://user:password@host:port,replicaSetHost:replicaSetPort/database?replicaSet=rs-someServer.
但这有点笨拙。有没有办法告诉猫鼬我们连接的是主服务器而不是从服务器?
第二个问题......即使列出其他主机也不起作用:
mongoose.connect('mongodb://localhost:P,S1:P,S2:P/XXX?replicaSet=rs0', { useNewUrlParser: true });
即使我提供了副本集,我也会收到此错误:
(node:13757) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): MongoError: seed list contains no mongos proxies, replicaset connections requires the parameter replicaSet to be supplied in the URI or options object, mongodb://server:port/db?replicaSet=name
这就是奇怪的地方:我可以做到这一点。如果我使用这一行:
mongoose.connect('mongodb://127.0.0.1:25023/XXX', { useNewUrlParser: true });
让它失败,然后碰一个JS文件强制重启NodeJS,然后它似乎开始工作了?
【问题讨论】: