NodeJS Streams Ожидание потоковой передачи всех данных. - PullRequest
0 голосов
/ 21 мая 2018

Мой код выполняет потоковую передачу данных из коллекции Монго и вставляет их в другую БД после выполнения некоторого количества операций с ней.

Кажется, я не могу найти способ дождаться обработки всех данных перед закрытием соединений с БД.Данные заканчиваются и обрабатываются через несколько секунд после того, как поток «закрыт».Я хочу дождаться завершения ВСЕХ операций с данными, прежде чем закрывать соединения с БД.Как я могу это сделать?

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++;
            })
        })
    })
})
...