На Form Action
типа POST
мы извлекаем все значения в Node.JS/Express
и пытаемся сохранить его в MongoDB
.async.waterfall внутри петли для петли выходит из цикла петли
Скрытое поле определяет длину свойства из фреймворка javascript, и его значение обновляется как значение скрытого поля.
Эта длина используется в бэкэнде (узле) для перебора списка элементов.
У меня есть async.waterfall
функция и for loop
работает внутри него, как это.
async.waterfall([
function(callback){
var itemLength = req.body.itemLength;
var itemProp,itemComponent;
var destination;
var destinationsArray =[];
for(var k=1; k<=itemLength; k++){
destination = new Destination({
name: req.body['destinationName'+k],
});
itemComponent = {
"itemCompProp" : req.body['itemCompProp'+k]
};
itemProp = new ItemProp({
itemComponent: itemComponent
});
itemProp.save(function(err,itemPropSaved){
destination.newProperty = itemPropSaved._id
destination.save(function(err,destinationSaved){
if(err){
console.log("Error== " + err);
}
else{
destinationsArray.push(destinationSaved._id);
}
});
});
}// End of For
callback(null,destinationsArray);
},
function(destinationsArray,callback){
var brand = new Brand({
name : req.body.brandName,
});
brand.save(function(err,brandSaved){
if(err){
console.log("Error== " + err);
}else{
console.log('Brand Saved');
}
});
callback(null);
}
], function (err, status) {
if(err){
req.flash('error', {
msg: 'Error Saving Brands'
});
console.log("Error : " + err);
}
else{
console.log("Brand Saved.");
req.flash('success', {
msg: 'Brand Successfully Added!'
});
}
});
res.redirect('/redirectSomewhere');
Когда мы управляем этим, destinationsArray
возвращается первым в null
, в отличие от прохождения через for loop
, а затем возвращая правильное значение destinationsArray
по длине (itemLength
) направлений.
Мы хотим, чтобы процесс был синхронным. Мы также попытались использовать закрытие упаковки for Loop
, но безрезультатно.
Мы не можем использовать async.eachSeries
вместо for Loop
как я просто итерации числовом собственности, и мы не имеем никакого documents to iterate over
Любое допустимое решения для запуска for Loop
внутри async.waterfall
?
Cheers and Thanks in Advance.
Работает как очарование. Отлично. Благодаря тонну! Не знал о 'async.whilst'. – theChinmay