[英]How to read directly from mongo slave using mongodb in nodejs
我試圖從從節點讀取,但我收到以下錯誤。
MongoError: not master
at Function.MongoError.create (node_modules/mongodb-core/lib/error.js:31:11)
at node_modules/mongodb-core/lib/topologies/server.js:777:66
at Callbacks.emit (node_modules/mongodb-core/lib/topologies/server.js:95:3)
at null.messageHandler (node_modules/mongodb-core/lib/topologies/server.js:249:23)
at Socket.<anonymous> (node_modules/mongodb-core/lib/connection/connection.js:265:22)
at emitOne (events.js:78:13)
at Socket.emit (events.js:170:7)
at readableAddChunk (_stream_readable.js:147:16)
at Socket.Readable.push (_stream_readable.js:111:10)
at TCP.onread (net.js:524:20)
這是我的代碼
var MongoClient = require('mongodb').MongoClient
MongoClient.connect('mongodb://slave.example.com/?slaveOk=true', {slaveOk: true}, (err, db) => {
if (err) { throw err }
d = db.db('order', {server: {slaveOk: true}})
d.eval('rs.slaveOk(); 1', (err, data) => {
if (err) { throw err }
console.log(data);
})
})
我在連接字符串中提供完整的主機列表,因為運行此查詢的節點只能訪問輔助MongoDB節點。
使用命令行界面時,只要在執行查詢之前運行rs.slaveOk()
,我就可以進行查詢。
你可以簡單地使用下面的代碼
var collection1 = db.collection(currentCollection,{readPreference:'secondaryPreferred'});
有關更多詳細信息,請檢查Scaling Read Query Load
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.