簡體   English   中英

如何在nodejs中使用mongodb直接從mongo slave讀取

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM