Обратный вызов выполняется рано, когда я создаю индекс - PullRequest
0 голосов
/ 15 апреля 2019

мой метод обратного вызова выполняется рано. CreateIndexMaxFrame должен начаться после завершения CreateIndexFrame. Но он запускается, пока «CreateIndexFrame» все еще индексируется. Также функция console.log("Done") должна выполняться, когда все сделано. Но это также начинает рано.

createIndexFrame(dbObject, collectionName,function()
            {
                createIndexMaxFrame(dbObject, collectionName,function()
                {
                    io.emit('message', { text: "Fertig" });
                    db.close();
                    console.log("DONE");
                });
            });

function createIndexFrame(dbObject,collectionName, callback)
{
    dbObject.collection(collectionName).createIndex({frame:1, temp:-1},function(err, res) {
        if (err) throw err;
        callback();
    });
}

function createIndexMaxFrame(dbObject,collectionName, callback)
{
    dbObject.collection(collectionName).createIndex({maxFrame:-1},function(err, res) {
        if (err) throw err;
        callback();
    });
}

https://i.ibb.co/bPzK3Bq/callback.png снимок экрана

Снимок экрана является журналом Docker и покажет проблему. Mongo_1 показывает все MongoLogs. Fill_db_1 - это программа, которая выполняет createIndexFrame, createIndexMaxFrame.

Как видите, MongoDB создаст 2 индекса параллельно.

[conn5] = is createIndexFrame ()

[conn2] = is createIndexMaxFrame ()

Также сообщение «СДЕЛАНО» уже отображается. Хотя createIndexMaxFrame еще не закончено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...