次のコードを見てみましょう。
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.
});
}
私の質問は、コールバックが渡されるときに常に「エラー、リソース」を実行するのはなぜですか。
エラーを処理しているため、 2 *に到達することさえできません。
3および4と同様に、エラーは別のレイヤーで処理されるため、常に NULL になります。なぜ私は5でこれをやらないのでしょうか:
db.open(function(error, connection){
if(error){ // 1
return errorHandler(error);
}
return callback(collection);
});
errorHandler 関数は主要なエラーを処理する関数になるため、各レイヤーでそれらを使用する必要はありません。たとえば、mongodb.findOne の場合と同じ話ですが、コールバックを渡すときにエラーを処理する必要があるのはなぜですか?