Node.js: как вернуть текущий документ из курсора в MongoDB - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь сделать синхронный цикл в коллекции MongoDB.

Я пытался использовать cursor.forEach() следующим образом:

const mongodb = require('mongodb').MongoClient

mongodb.connect('mongodb://localhost:27017', { useNewUrlParser: true }, (error, mongo) => {
  if (error) { return console.error(error) }

  let cursor = mongo.db('database_name').collection('collection_name').find()

  cursor.forEach(item => {
    console.log(item._id)
  })
});

Но это не работает с синхронными операциями.

Итак, я решил использовать другой подход, используя cursor.hasNext() & cursor.next()

Это выглядит так:

const mongodb = require('mongodb').MongoClient

mongodb.connect('mongodb://localhost:27017', { useNewUrlParser: true }, (error, mongo) => {
  if (error) { return console.error(error) }

  let cursor = mongo.db('database_name').collection('collection_name').find()

  getDocument(cursor)
});


const getDocument = (cursor) => {

  console.log(cursor._id))
  
  if (cursor.hasNext()) {
    getDocument(cursor.next())
  }
}

По-видимому, он возвращает ошибку, что такой вещи как cursor._id не существует. Итак, как мне получить тело (содержимое) текущего документа из курсора?

...