мой метод обратного вызова выполняется рано. 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 еще не закончено.