使用带有Postgres后端的express.Router(),当写入put / post时,单独输入每个db字段可能非常费力。例如:
router.route( '/熊/:bear_id') .get(function(req,res){ ... })
.put(function(req, res) {
Bear.findById(req.params.bear_id, function(err, bear) {
if (err)
res.send(err);
bear.name = req.body.name;
bear.field1 = req.body.field1;
bear.field2 = req.body.field2;
bear.field3 = req.body.field3;
bear.field4 = req.body.field4;
bear.moreFields = req.body.moreFields;
etc.
bear.save(function(err) {
if (err)
res.send(err);
res.json({ message: 'Bear updated!' });
});
});
});
那么 - 是否有一个模式或JS工具可以自动将所有对象名称传播到正确的req.body名称,假设JSON键值和db字段名称相同?
我不想使用ORM。
谢谢!
答案 0 :(得分:0)
对于 POST 动词,只需添加body来创建方法:
Bear.create(req.body).then(function() {
//...
});
对于 PUT 动词,您必须像往常一样在数据库中找到该文档,然后在循环中更新它
Bear.findById(req.params.bear_id, function(err, bear) {
for (let elem in req.body) {
bear[elem] = req.body[elem];
}
bear.save((err, bear)=> {
if (err) {
return next(err);
} else {
res.json({ message: 'Bear updated!' });
}
});
});
必须安装包体解析器。