将依赖项注入模型的最佳实践是什么?尤其是,如果他们的 getter 是异步的,比如mongodb.getCollection()
?
关键是一次注入依赖项
var model = require('./model')({dep1: foo, dep2: bar});
并调用所有成员方法,而不必将它们作为参数传递。我也不希望每种方法都以异步 getter 的瀑布开始。
我最终得到了一个专用的exports
包装器,它代理所有调用并传递异步依赖项。
但是,这会产生很多开销,重复很多,我通常不喜欢它。
var Entity = require('./entity');
function findById(id, callback, collection) {
// ...
// callback(null, Entity(...));
};
module.exports = function(di) {
function getCollection(callback) {
di.database.collection('users', callback);
};
return {
findById: function(id, callback) {
getCollection(function(err, collection) {
findById(id, callback, collection);
});
},
// ... more methods, all expecting `collection`
};
};
注入依赖项的最佳实践是什么,尤其是那些具有异步 getter 的依赖项?