【发布时间】:2012-08-23 22:58:56
【问题描述】:
让我们看看下面的代码:
mongodb.js
var mongo = require('mongodb')
, mongodb = module.exports;
mongodb.database = function(key, dbName, dbServer, callback){
var db = new mongo.Db(dbName, dbServer);
db.open(function(error, connection){ // 5
if(error){ // 1
throw error;
}
return callback(null, connection);
});
};
mongodb.collection = function(dbKey, collName, callback){
mongodb.database(dbKey, function(error, connection){
connection.collection(collName, function(error, collection){ // 2
if(error){ // 3
throw error;
}
return callback(null, collection);
});
});
}
model.js
var db = require('./mongodb.js');
var model = module.exports;
model.test = function(callback){
db.collection('users', function(error, collection){ // 4
// do something.
});
}
我的问题是,为什么我们在传递回调时总是做“错误,资源”,因为,看看1
我们正在处理错误,所以它甚至无法达到 2*
与 3 和 4 相同,它们将始终为 NULL,因为错误是在不同的层。现在我为什么不在 5 这样做:
db.open(function(error, connection){
if(error){ // 1
return errorHandler(error);
}
return callback(collection);
});
errorHandler函数将是一个处理重大错误的函数,所以我们不必在每一层都使用它们,同样的故事例如mongodb.findOne,为什么我们在传入时必须处理错误回调?
【问题讨论】:
标签: javascript node.js callback