Reputation: 1753
I am calling an a function like this
MyService.validate(params,function(err,response){
//results from validate
console.log(response);
})
In Myservice.validate
there is an async waterfall
function is doing a
validation each validation rules run in single function if any one fails i want to return back
//run validations here
validate:function(params,callback){
async.watefall([
function (nextValidation){
if(params.length<8){
//returns to MyService.validate callback
return callback({'status':false})
}
nextValdation();
},
function (finalCallback){
if(params.name!='foo'){
//returns to MyService.validate callback
return callback({'status':false})
}
finalCallback();
}
],function(err,response){
//all validation rules passed
return callback({'status':true})
})
}
But if one of the validation fails the return is not working ie
return callback({'status':false})
never fired
if(params.length<8){
//never fired
return callback({'status':false})
}
Upvotes: 0
Views: 188
Reputation: 1039
Why you are trying to call callback from first function in waterfall. Instead call its callback i.e. nextvalidation with err set. I think you need to read little more about async.waterfall. For a hint use validate function like this -
var async = require('async');
var validate=function(params,callback){
async.waterfall([
function (nextValidation){
if(params.length<8){
//returns to MyService.validate callback
nextValidation({'status':false})
}
else nextValidation();
},
function (nextValidation){
if(params.name!='foo'){
//returns to MyService.validate callback
nextValidation({'status':"random"})
}
else nextValidation();
}
],function(err,response){
//all validation rules passed
if(err) return callback(err);
else return callback({'status':true})
})
}
validate("1234",function(err,response){
if(err) console.log(err);
else console.log("all set");
})
Upvotes: 2