1

粗末な REST API を作成するときに行ってきた退屈なボイラープレート コードのいくつかへのショートカットを探しています。エクスプレスを使用して、保存したいオブジェクトを投稿しています。

app.post('/', function(req, res){
  var profile = new Profile();

  //this is the tedious code I want to shortcut

  profile.name = req.body.name;
  profile.age = req.body.age;
  ... and another 20 properties ...

  //end tedious code

  profile.save()
});

すべての req.body プロパティをプロファイル オブジェクトに適用する簡単な方法はありますか? 私はサーバーの異なるモデルに対して同じ crud コードを記述し、プロパティは開発中に頻繁に変更されます。

4

4 に答える 4

1

for-inループについてはどうでしょうnew Profile()。値を設定するための適切なスキーマを生成すると仮定すると、req.body が混乱することはありません。

for (var key in profile) {
  if (profile.hasOwnProperty(key) && req.body.hasOwnProperty(key))
    profile[key] = req.body[key];
}

より正確には、この場合、モジュールごとに解析/文字列化関数が必要です。簡単に呼び出すことができるように:

var profile = Profile.parse(req.body);

実際、非 IE ブラウザーまたは node.js/rhino で遊んでいて、 req.body がcleanである場合は、次のように実行できます。

var profile = req.body;
profile.__proto__ = Profile.prototype;

これで完了です。

于 2012-11-30T18:17:52.830 に答える
0

このようなことを行うことができます:

for(key in req.body) {
  profile[key] = req.body[key];
}
于 2012-11-30T18:13:53.460 に答える
0

すべてのキーを反復することは、おそらく悪い考えです。より良いでしょう:

['name', 'age', ...].forEach(function(key) {
    profile[key] = req.body[key];
});
于 2012-11-30T18:18:45.607 に答える