问题描述
我试图通过猫鼬连接到MongoDB copySet.我使用了链接.
配置json:
I tried to connect to MongoDB replicaSet via mongoose. I used this link.
Configuration json:
"mongoose": {
"uri": "mongodb://localhost:27022/chat,localhost:27021,localhost:27020",
"options": {
"replset": { "rs_name": "rs0" },
"server": {
"poolSize": 3,
"socketOptions": {
"keepAlive": 1
}
}
}
}
猫鼬连接:
var mongoose = require('mongoose');
mongoose.connect(config.get('mongoose:uri'), config.get('mongoose:options'));
启动应用程序后出现异常:
And after launching application i got exception:
Error: host must be specified [undefined]
at new exports.ConnectionPool (c:\Users\lor1an\Downloads\prj_chat-master\prj_chat-master\node_modules\mongodb\lib\mongodb\connection\connection_pool.js:18:11)
at Server.connect (c:\Users\lor1an\Downloads\prj_chat-master\prj_chat-master\node_modules\mongodb\lib\mongodb\connection\server.js:335:25)
at Db.open (c:\Users\lor1an\Downloads\prj_chat-master\prj_chat-master\node_modules\mongodb\lib\mongodb\db.js:264:23)
at MongoStore._open_database (c:\Users\lor1an\Downloads\prj_chat-master\prj_chat-master\node_modules\connect-mongo\lib\connect-mongo.js:174:15)
at MongoStore._get_collection (c:\Users\lor1an\Downloads\prj_chat-master\prj_chat-master\node_modules\connect-mongo\lib\connect-mongo.js:169:14)
at MongoStore.get (c:\Users\lor1an\Downloads\prj_chat-master\prj_chat-master\node_modules\connect-mongo\lib\connect-mongo.js:213:10)
at Object.session [as handle] (c:\Users\lor1an\Downloads\prj_chat-master\prj_chat-master\node_modules\connect\node_modules\express-session\index.js:215:11)
at next (c:\Users\lor1an\Downloads\prj_chat-master\prj_chat-master\node_modules\connect\lib\proto.js:194:15)
at Object.module.exports [as handle] (c:\Users\lor1an\Downloads\prj_chat-master\prj_chat-master\middleware\resExtensions.js:21:2)
at next (c:\Users\lor1an\Downloads\prj_chat-master\prj_chat-master\node_modules\connect\lib\proto.js:194:15)
Db:聊天,主服务器:localhost:27022.
Db: chat, primary server: localhost:27022.
我也尝试删除其他两台服务器(仅在配置json中保留主服务器),并且我看到它知道有关辅助服务器的信息(我使用了日志).我认为这与mongodb元数据有关.但是,当我关闭主服务器时,它就完成了工作(难怪),我需要它,以便可以使用辅助服务器.
有什么想法吗?
Also I tried remove two other servers (keeping only the primary one in config json) and I saw that it knows about the secondary servers (I used log). I think it's about mongodb meta-data. But when I shutdown primary one, it finished its work (no wonder), I need it so it can use the secondary one instead.
Any ideas?
推荐答案
我们使用这个:
if(config.db.indexOf('replicaSet') > - 1) {
dbOptions = {
db: {native_parser: true},
replset: {
auto_reconnect:false,
poolSize: 10,
socketOptions: {
keepAlive: 1000,
connectTimeoutMS: 30000
}
},
server: {
poolSize: 5,
socketOptions: {
keepAlive: 1000,
connectTimeoutMS: 30000
}
}
};
}
var db = mongoose.connect(config.db, dbOptions);
其中
config.db = 'mongodb://USER:PW@host1:port1,host2:port2/DBNAME?replicaSet=RSNAME'
这篇关于猫鼬连接到副本集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!