Mongodb 无法使用mongoose。在副本集中的辅助上填充

Mongodb 无法使用mongoose。在副本集中的辅助上填充,mongodb,mongoose,populate,slave,replicaset,Mongodb,Mongoose,Populate,Slave,Replicaset,我有一个mongoose find查询,我想在其中使用。填充以填充一些交叉引用。我正在对mongo副本集的辅助节点运行此操作。我可以对主数据库运行查询,并且可以使用文档化的读取首选项对辅助数据库运行普通的查找和聚合查询,而无需填充 我在添加.populate行时遇到了问题。我得到以下错误: {[MongoError:not master and slaveOk=false]名称:'MongoError'} 定义了适当的模式,等等,并且带有.populate行的查询可以针对主模式正常运行。只是不针

我有一个mongoose find查询,我想在其中使用。填充以填充一些交叉引用。我正在对mongo副本集的辅助节点运行此操作。我可以对主数据库运行查询,并且可以使用文档化的读取首选项对辅助数据库运行普通的查找和聚合查询,而无需填充

我在添加.populate行时遇到了问题。我得到以下错误:

{[MongoError:not master and slaveOk=false]名称:'MongoError'}


定义了适当的模式,等等,并且带有.populate行的查询可以针对主模式正常运行。只是不针对次对象,但同样,不带填充行的同一查询也会针对次对象正确运行。有什么想法吗?谢谢

您可以使用populate.read'secondarypreferred'这将允许从辅助副本集读取数据。

您的readPreference是什么,您在哪里设置它?它是全局设置的,还是只在查询中使用.read修饰符?我两个都试过了。在连接URI上使用?replicaSet=xxxx&readPreference=secondary,在Model.find查询中使用.read'secondary'。我还传入了一个{replset:{xxx}}options文档,作为mongoose.connectdburi选项调用的第二个参数。我已经分别和一起尝试过了。你能记录发送给MongoDB的人口查询并将其包含在问题中吗?问题是读取首选项设置不正确,因此我们需要跟踪它设置的位置或发现它未设置。我在mongoose项目中找不到任何相关问题,我怀疑这之前没有出现过,因此我认为您的code.db.connect=functiondbConfig中一定有错误或遗漏{dbURI=mongodb://+dbConfig.user+:+dbConfig.pass+@+dbConfig.host+:+dbConfig.port+/+dbConfig.name+?replicset=FitRS&readPreference=secondary;var options={db:{readPreference:'readPreference.secondary'},replset:{rs_name:'xxxxx',connectWithNoPrimary:true,readPreference:'readPreference.secondary'};mongoose.connectdbURI,options;}var query=hndl.find{state:3}.read'secondary'。其中…选择{…}.populate{path:'xref schema',选择:'field1 field2 field3'}..execfunction err,res{};