mongoose连接到副本集
我试图通过mongoose连接到MongoDB副本。 我用这个链接 。
configurationjson:
"mongoose": { "uri": "mongodb://localhost:27022/chat,localhost:27021,localhost:27020", "options": { "replset": { "rs_name": "rs0" }, "server": { "poolSize": 3, "socketOptions": { "keepAlive": 1 } } } }
mongoose连接:
var mongoose = require('mongoose'); mongoose.connect(config.get('mongoose:uri'), config.get('mongoose:options'));
而启动应用程序后,我得到了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。
另外我试着删除另外两台服务器(只保留configurationjson中的主服务器),我看到它知道二级服务器(我用日志)。 我认为这是关于mongodb元数据。 但是,当我closures主要的一个,它完成了它的工作(难怪),我需要它,所以它可以使用次要的。
有任何想法吗?
我们使用这个:
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'
我也遇到了麻烦。 我从经验中学到的是:
只有在连接URI包含单个非群集连接(又称单个连接string)时,才会调用“服务器”块。
仅当连接URL包含逗号分隔的连接string(又名复制集)列表时,才会调用“replset”块。
var options = { db: { native_parser: true }, // This block gets run for a non replica set connection string (eg. localhost with a single DB) server: { poolSize: 5, reconnectTries: Number.MAX_VALUE, ssl: false, sslValidate: false, socketOptions: { keepAlive: 1000, connectTimeoutMS: 30000 } }, // This block gets run when the connection string indicates a replica set (comma seperated connections) replset: { auto_reconnect: false, poolSize: 10, connectWithNoPrimary: true, ssl: true, sslValidate: false, socketOptions: { keepAlive: 1000, connectTimeoutMS: 30000 } } };
这个块在localhost和生产env上工作。 希望能帮助到你。
您的连接string可能无效。 您应该为每个副本集成员提供URI:
“uri”:“mongodb:// localhost:27022 / chat,localhost:27021,localhost:27020”
您应该在Mongoose文档中检查副本集连接部分。
- MongoDB查询大集合
- 使用Mongoose引用具有未知模型types的对象
- 使用Nodejs将文件存储在mongodb中
- 从MongoDB驱动调用getUsers()函数
- 推荐的数据结构(用于不查询node.js中的嵌套数据)
- node.js mongoose chai-http RESTful APItesting(唯一字段)的行为与手动ARC APItesting不同
- MongoDB – Mongoose – 只能调用一次控制器保存方法。 然后它再也不会保存了
- MongoDB parseError使用限制和sorting
- 当我将数据从index.js传递给index.ect时,我无法在Node.js上显示模型值