Я пытаюсь сделать синхронный цикл в коллекции 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
не существует. Итак, как мне получить тело (содержимое) текущего документа из курсора?