2015-07-02 3 views
1

У меня есть модель под названием Task. Он имеет атрибут dependencies, в котором хранится информация (массив идентификаторов задач) о том, какие задачи должны быть выполнены, прежде чем можно продолжить обработку задачи.Sails.js: Создание нескольких записей, зависящих от предыдущих

Теперь у меня есть ситуация, когда у меня есть массив объектов. Я создаю Task s на основе атрибутов каждого из этих объектов. Уловка состоит в том, что каждая из созданных задач зависит от предыдущей созданной задачи, но асинхронность Waterline становится здесь, так как я не могу просто прокрутить каждый объект и сохранить идентификатор зависимостей в переменной после создания каждой записи.

В синхронном псевдокоде, вот что я хотел бы случиться:

var dep = undefined, t = undefined; 
var objects = [object1, object2, object3, object4] // array of objects 
for object in objects { 
    object.dependancy = dep; 
    t = createTaskBasedOnObject(object); // assuming this'd return the created object 
    dep = t.id; // Change dep so the next object has the created task as a dependency 
}; 

Что бы лучший способ сделать это? Я в порядке с использованием внешних библиотек, если это необходимо, или если это упростит ситуацию.

ответ

1

Для этого вы можете использовать библиотеку async.js. Он глобально открыт в проекте Sails.

async.each(objects, function (object, next) { 
    object.dependancy = dep; 
    createTaskBasedOnObject(object, function (e, t) { 
    // handle errors... 

    dep = t.id; 
    return next(); 
    }); 
}); 
Смежные вопросы