我正在寻找一些快捷方式来创建一个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代码,并且在开发过程中属性会经常变化。
答案 0 :(得分: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;
你已经完成了。
答案 1 :(得分:0)
可以这样做:
for(key in req.body) {
profile[key] = req.body[key];
}
答案 2 :(得分:0)
迭代所有键可能是一个坏主意。更好的是:
['name', 'age', ...].forEach(function(key) {
profile[key] = req.body[key];
});
答案 3 :(得分:0)
最简单的方法是使用扩展运算符 (...)。
app.post('/', function(req, res){
var profile = new Profile({...req.body});
profile.save()
});