1

我正在寻找一些我在创建 crud 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];
}

更准确地说,在这种情况下,您的每个模块都应该有一个 parse/stringify 函数。这样您就可以简单地调用:

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 回答
0

最简单的方法是使用扩展运算符 (...)。

app.post('/', function(req, res){
  var profile = new Profile({...req.body});
  profile.save()
});
于 2021-02-02T18:38:51.470 回答