Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reading mongodb cursor produces - MongoError: clientcursor already in use?

MongoError: clientcursor already in use? driver problem?

const { MongoClient } = require('mongodb');

(async () => {
  const db =  await MongoClient.connect('mongodb://127.0.0.1/test');
  const cursor = db.collection('test').find();

  while (cursor.hasNext()) {
    const item = await cursor.next();
    console.log(item);
  }
})().catch(console.error);

Produces the following error:

{ MongoError: clientcursor already in use? driver problem?
    at Function.MongoError.create (/node_modules/mongodb-core/lib/error.js:31:11)
    at /node_modules/mongodb-core/lib/connection/pool.js:497:72
    at authenticateStragglers (/node_modules/mongodb-core/lib/connection/pool.js:443:16)
    at Connection.messageHandler (/node_modules/mongodb-core/lib/connection/pool.js:477:5)
    at Socket.<anonymous> (/node_modules/mongodb-core/lib/connection/connection.js:331:22)
    at emitOne (events.js:115:13)
    at Socket.emit (events.js:210:7)
    at addChunk (_stream_readable.js:266:12)
    at readableAddChunk (_stream_readable.js:253:11)
    at Socket.Readable.push (_stream_readable.js:211:10)
  name: 'MongoError',
  message: 'clientcursor already in use? driver problem?',
  ok: 0,
  errmsg: 'clientcursor already in use? driver problem?',
  code: 12051,
  codeName: 'Location12051' }

Versions:

Did anyone solve this problem?

like image 242
mahnunchik Avatar asked Oct 12 '17 15:10

mahnunchik


1 Answers

My wrong... I forgot await for cursor.hasNext().

Correct code is:

while (await cursor.hasNext()) {
  const item = await cursor.next();
  console.log(item);
}
like image 163
mahnunchik Avatar answered Nov 14 '22 23:11

mahnunchik