2015-01-30 3 views
1

Я пытаюсь сделать async правильно работать. В этом примере я хочу создать и сохранить несколько объектов mongoose и получить обратный вызов, когда задание будет выполнено.Функция async.times не запускает обратный вызов

Даже если объекты сохранены в базе данных, обратный вызов не запускается. Журналы консоли также не отображаются. Может ли кто-нибудь помочь мне узнать, что мне не хватает?

var number_of_objects = 5; 
async.times(number_of_objects, function(n, next){ 
    var myObject = new Object({ random_string : Math.random().toString(36).substring(7), isActive: false }); 
    myObject.save(n,function(err,object) { 
     console.log("saved"); 
     console.log(n); 
     next(err,object); 
    }); 
},function(err, objects) { 
    console.log(objects); 
    res.sendStatus(200); 
}); 

Большое спасибо заранее

+0

Вы уверены, что никаких ошибок не происходит? Вы каждый раз создаете 'myObject', но вы сохраняете объект' n' –

+0

Нет ошибок, 5 новых объектов с разными 'random_string' созданы, но без обратного вызова. Что я должен изменить в своем коде? Спасибо за ваше время – cor

ответ

3

Проблема в коде является то, что save функция mongoose принимает только один аргумент - функцию обратного вызова.

Таким образом, вы должны изменить свой код на следующее:

myObject.save(function(err,object) { 
    console.log("saved"); 
    console.log(n); 
    next(err,object); 
}); 
+1

yess .. это была проблема. Примерный код 'async.times' меня сбивал с толку. Благодаря! – cor

+1

@cor Я проверил документы, и они действительно запутывают функцию 'times' –