【发布时间】:2013-01-09 22:22:47
【问题描述】:
该应用正在使用 express 3。以下是从数据库获取数据的路由的准系统示例:
var Post = mongoose.model('Post')
app.get('post/:id/loompas', function(req, res) {
Post.getLoompas(function(err, data){
res.render('x', data)
})
})
其中Posts.getSomeData在/models/post.js中定义为instance methods,有时会访问外部API:
PostSchema.method('getLoompas', function(callback){
var post = this
API.get('y', function(x){
this.save(x)
callback(x)
})
})
这开始有异味,看起来它不属于 Schema 定义。方法的集合可能会变得非常大。
建议使用哪些设计模式来分离这些问题并避免过于胖的模型?用于外部 API 调用的服务层?有什么有趣的解决方案吗?
【问题讨论】:
-
我最近遇到了this post。作者不使用mongoose,自己搭建服务和DAO层。这听起来像是在 ORM 时代重新发明轮子,但来自 J2EE 背景,这种设置在干净的代码方面对我来说更有意义。在您的情况下,我认为您的外部 API 调用程序代码可以安全地驻留在服务层中。
标签: node.js model-view-controller design-patterns mongoose