Node.js 使用mongoose在replicaset上创建连接并执行查询的最简单方法?

Node.js 使用mongoose在replicaset上创建连接并执行查询的最简单方法?,node.js,mongoose,Node.js,Mongoose,我正在尝试对副本集执行特定查询。。。但是没有成功 使用mongoose在replicaset上创建连接并执行查询的最简单方法是什么 我的代码-1: var mongoose = require('mongoose'); mongoose.connect('mongodb://user:pass@host:port/db,user:pass@host2:port/db'); var someSchema = new mongoose.Schema({...}, { read: 'secondar

我正在尝试对副本集执行特定查询。。。但是没有成功

使用mongoose在replicaset上创建连接并执行查询的最简单方法是什么

我的代码-1:

var mongoose = require('mongoose');
mongoose.connect('mongodb://user:pass@host:port/db,user:pass@host2:port/db');

var someSchema = new mongoose.Schema({...}, { read: 'secondary' });
var some = mongoose.model('Some', someSchema);

some.find(...) -> err [Error: not authorized for query on bd.collection]
我的代码-2:

mongoose.connect('mongodb://user:pass@host:port/db,user:pass@host2:port/db?slaveOk=true');
some.find(...) -> err [Error: not authorized for query on bd.collection]
我的代码-3:

mongoose.connect('mongodb://user:pass@host:port/db,mongodb://user:pass@host2:port/db?slaveOk=true');
some.find(...) -> err [Error: not authorized for query on bd.collection]
我的代码-4:

mongoose.connect('mongodb://user:pass@end:port/db,mongodb://user:pass@end2:port/db);
some.find(...) -> err [Error: not authorized for query on bd.collection]
我的代码-5:

mongoose.connect('mongodb://user:pass@end:port/db,mongodb://user:pass@end2:port/db?slaveOk=true);

var someSchema = new mongoose.Schema({...});
var some = mongoose.model('Some', someSchema);

some.find(...).slaveOk() -> query executed on master (apparently)
some.find(...).read('secondary') -> query executed on master (apparently - no change on mongostat of replicaset. I'm mongoHQ user and I don't trust in mongostat from dashboard.)
因此,如果我连接mongo hostReplica:port/db-u user-p pass和exec db.getMongo().setslavook(),我可以毫无问题地执行db.collection.find

我做错了什么

谢谢

我遵循了,它对我来说很好。我的Mongoose连接字符串如下所示:

mongodb://user:pass@host1,user:pass@host2/db?replicaSet=myReplica&readPreference=secondaryPreferred
我认为
slaveOk
已被弃用,我们现在应该使用
readPreference
选项


由于我将Nodejs/Mongoose用于只读api,所以我希望从从机读取,并保留主机以主要用于插入(这是在Nodejs之外完成的)。这就是为什么我在将
readPreference
选项设置为secondary的情况下使用
secondary-preferred
连接到mongo客户端:

mongodb://username:password@host:27017/database?readPreference=secondary
不确定
slaveOk
是否被弃用,但
readPreference
始终有效