Кращим способом вирішення подібної проблеми є використання doc.toObject()
подібного
doc.toObject({ getters: true })
інші варіанти включають:
getters:
застосувати всі геттери (шляхові та віртуальні)
virtuals:
застосувати віртуальні геттери (може замінити параметр getters)
minimize:
видалити порожні об’єкти (за замовчуванням до істинного)
transform:
функція перетворення, яка застосовується до отриманого документа перед поверненням
depopulate:
депопуляція будь-яких заселених шляхів, замінюючи їх оригінальними рефлексами (за замовчуванням на хибні)
versionKey:
чи включати ключ версії (за замовчуванням до істинного)
так, наприклад, ви можете сказати
Model.findOne().exec((err, doc) => {
if (!err) {
doc.toObject({ getters: true })
console.log('doc _id:', doc._id)
}
})
і тепер це буде працювати.
Для ознайомлення дивіться: http://mongoosejs.com/docs/api.html#document_Document-toObject