我是nodejs的初学者。我想了解一些代码。基本上它会创建一个事件。
模型/ event.js
EventSchema.static("createEvent",function(event,user,callback){
var That = this;
async.waterfall([
function(callback){
var time = moment(event.releaseTime).tz(event.releaseTimezone).utc().toDate();
event.rTime= time;
callback();
},
function(callback){
var model = new That(event);
That.validateEvent(model,user,function(err){
if(err){
callback({message:err});
return;
}else{
callback(null,model);
return;
}
});
},
function(model,callback){
model.save(function(err,doc){
if(err){
callback({message:"Error saving event",err:err});
}else{
callback(null,doc);
}
});
},
function(savedEvent,callback){ /*Some further code is written here*/}
我已经了解了前两个回调函数,但未能理解第三个&第四个。
在第二次回调中它说
callback(null,model);
然后下一个回调以
开头 function(model,callback){
在第三次回调中它说
callback(null,doc);
然后下一个回调以
开头 function(savedEvent,callback){
我不明白这一点。任何帮助都非常感谢。
答案 0 :(得分:2)
callback(null,model);
调用函数(存储在名为callback
的变量中)。将两个参数(值null
和变量model
的值)传递给它。
function(model,callback){
定义了一个函数。它希望收到两个论点。第一个参数将存储在名为model
的变量中。第二个参数将存储在名为callback
的变量中。
对函数和函数定义的另一个调用以相同的方式工作。
答案 1 :(得分:1)
对于瀑布,第二个和后续函数的第一个参数是/是前一个回调的返回值。根据{{3}}:
waterfall([
function(callback){
callback(null, 'one', 'two');
},
function(arg1, arg2, callback){
callback(null, 'three');
},
function(arg1, callback){
// arg1 now equals 'three'
callback(null, 'done');
}
], function (err, result) {
// result now equals 'done'
});