【发布时间】:2013-10-31 21:03:49
【问题描述】:
我来自面向对象的背景,以下是我将 json 响应中的两个或多个模型的属性与 Express 相结合的理想语法:
//Verbose
app.get('/boat_house', function(req, res){
var boat = Model1;
var house = Model2;
var bColour = boat.colour;
var hWidth = house.width;
res.jsonp({
boatColour: bColour,
houseWidth: hWidth,
});
});
//Compact
app.get('/boat_house', function(req, res){
res.jsonp({
boatColour: Model1.colour,
houseWidth: Model2.width,
});
});
据我所知,这是不可能的。我研究过光纤和异步,我知道 Node 包含许多模块来解决许多问题。虽然我在试图模仿上述情况时最终追上了我的尾巴。
- 如何将 Model1 和 Model2 中的属性合并到 res.jsonp 中?
- 哪个反回调地狱模块最能模拟上述语法?
- 我错过了顿悟吗?我是否需要放弃我的 OO 方式并了解如何以功能/模块化的方式解决我的问题(即上述问题)?
编辑:
模型是从数据存储中检索的。例如,使用 mongoose API,您可以通过以下方式检索 Model1:
Boat.findOne(function(boat){
//do something with boat
});
我遇到过这个similar question,它的答案建议使用 async.parallel。我更喜欢类似于以下的语法:
var when = require('HypotheticalPromiseModule').when;
var boat = Model1.getAsync();
var house = Model2.getAsync();
when(boat, house).then(function() {
res.jsonp({ ... });
});
有没有可以给我这个的 npm 模块?
【问题讨论】:
标签: javascript node.js asynchronous express callback