繁体   English   中英

DDD和Node.js:拥有异步回调存储库的好习惯?

[英]DDD and Node.js: Good practice to have a repository with async callbacks?

这是事情:

  • 客户端不应该知道存储库使用的持久性机制
  • 例如,当使用MongoDB实现存储库作为持久性存储时,通过异步回调来检索值
  • 仍然可以使用回调实现同步调用,异步调用必须使用回调实现。 (或期货等,但我不想去那里)

对我来说意味着存储库(至少对于提取)应该在接口中定义回调,即使实现恰好是同步的,例如:

var repo = {
    cache: {},
    getById: function(id,callback){
        callback(null,this.cache[id]); 
    }
}

因为我可能会(很快)将其改为:

var repo = {
    getById: function(id,callback){
        mongoose.findOne({_id:id},callback);
    }
}

恕我直言,对于C / U / D,同样的需求主要来自持久层的错误报告。

简而言之:您是否认为使用异步回调定义存储库(在Nodej中,虽然不是真正相关)是最佳实践?

如果周围的应用程序代码的其余部分也是异步的,我认为这是一个很好的做法。 从技术上讲,这当然是一种很好的做法,因为存储库是IO绑定的,并且在保持阻塞调用线程方面没有任何意义。 问题在于,异步回调会导致延续传递风格 ,从而导致学习曲线和大多数语言的摩擦程度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM