Робота з Nodejs та MongoDB через власний драйвер Node MongoDB. Потрібно отримати деякі документи та внести зміни, а потім зберегти їх назад. Це приклад:
db.open(function (err, db) {
db.collection('foo', function (err, collection) {
var cursor = collection.find({});
cursor.each(function (err, doc) {
if (doc != null) {
doc.newkey = 'foo'; // Make some changes
db.save(doc); // Update the document
} else {
db.close(); // Closing the connection
}
});
});
});
З асинхронним характером, якщо процес оновлення документа триває довше, тоді, коли курсор досягає кінця документів, підключення до бази даних закривається. Не всі оновлення зберігаються у базі даних.
Якщо значення db.close()
пропущено, усі документи коректно оновлені, але програма зависає, ніколи не закривається.
Я побачив публікацію, в якій пропонується використовувати лічильник для відстеження кількості оновлень, коли повернутися до нуля, потім закрити db. Але чи я роблю тут щось погане? Який найкращий спосіб вирішити подібну ситуацію? Чи db.close()
потрібно використовувати для звільнення ресурсів? Або потрібно відкрити нове з’єднання дБ?