0

私はオブジェクト指向のバックグラウンドを持っており、Express を使用して json 応答で 2 つ以上のモデルの属性を結合するための理想的な構文は次のとおりです。

//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,
  });

});

私が見た限りでは、これは不可能です。私はファイバーと非同期を調べましたが、ノードには多くの問題を解決するための多くのモジュールがたくさんあることを理解しています。上記をエミュレートしようとしている間、私は尻尾を追いかけてしまいましたが。

  1. Model1 と Model2 の属性を res.jsonp に結合するにはどうすればよいですか?
  2. 上記の構文を最もよくエミュレートするアンチコールバック地獄モジュールはどれですか?
  3. 私はひらめきを見逃していますか?オブジェクト指向の方法を手放し、機能的/モジュール的な方法で問題 (つまり上記の問題) を解決する方法を理解する必要がありますか?

編集:

モデルはデータストアから取得されます。たとえば、mongoose API を使用すると、次のようにして Model1 を取得できます。

Boat.findOne(function(boat){
  //do something with boat
});

私はこの同様の質問に出くわしました。これに対する答えは、async.parallel の使用を示唆しています。次のような構文をお勧めします。

var when = require('HypotheticalPromiseModule').when;

var boat = Model1.getAsync();
var house = Model2.getAsync();

when(boat, house).then(function() {
   res.jsonp({ ... });
});

これを提供するnpmモジュールはありますか?

4

1 に答える 1