Мой код выполняет потоковую передачу данных из коллекции Монго и вставляет их в другую БД после выполнения некоторого количества операций с ней.
Кажется, я не могу найти способ дождаться обработки всех данных перед закрытием соединений с БД.Данные заканчиваются и обрабатываются через несколько секунд после того, как поток «закрыт».Я хочу дождаться завершения ВСЕХ операций с данными, прежде чем закрывать соединения с БД.Как я могу это сделать?
PS: я вижу, что все данные были оперированы.Это хорошо работает.Но я хочу закрыть соединения с БД.Мне нужно дождаться окончания всех операций, прежде чем делать это!
var count = 0; // Counter for number of mongo docs that has been inserted in new_db
mongo_db.collection(config.collection, function (err, coll) {
coll.find(config.mongo_query).count(function (e, coll_docs_count) {
var stream = coll.find(config.mongo_query).stream();
stream.on('close', function () {
if (count === coll_docs_count) {
// This NEVER executes since the data is finished
//being operated and inserted in the NEW DB a few seconds after
//this moment.
mongo_client.close();
cb_bucket.disconnect();
}
});
stream.on('data', function (doc) {
... // Do some operations on it
new_db.insert(doc, function (blah blah) {
count++;
})
})
})
})