有没有比显式赋值更好的方法在 Express 中实现 PUT 方法?
Is there a better way to implement PUT method in Express than explicitly assigning values?
有没有比将请求中的每个值显式分配给数据库加载对象(来自 MongoDB)更好的方法来实现 Express 中的 PUT 方法?
function put(req, res) {
const { school } = req;
school.name = req.body.name;
school.nature = req.body.nature;
school.website = req.body.website;
school.facebookURL = req.body.facebookURL;
school.instagramURL = req.body.instagramURL;
...
req.school.save((err) => {
if (err) {
return res.send(err);
}
return res.json(school);
});
}
我的文档有很多属性,JSON 会变得很复杂。我对 Express 比较陌生,想知道是否有更优化的技巧。
假设加载的对象(学校)是一个mongodb集合。
您可以使用集合的 update 方法,而无需明确指定要更新的数据。
function put(req, res) {
const { school } = req;
school.update({
_id:ObjectId(req.param.id)
},
req.body)
.then(function (success) {
res.json();
})
.catch(function (error) {
res.status(404).send(err);
}); }
ps:目前在移动设备上,因此格式可能很差。
根据@LawrenceCherone 在评论中给我的提示,我想出了一个非常优雅的问题解决方案。我在模型模式中进行验证,所以这里的代码可以简短而有趣!
function put(req, res) {
const { school } = req;
Object.assign(school, req.body);
req.school.save((err) => {
if (err) {
return res.send(err);
}
return res.json(school);
});
}
有没有比将请求中的每个值显式分配给数据库加载对象(来自 MongoDB)更好的方法来实现 Express 中的 PUT 方法?
function put(req, res) {
const { school } = req;
school.name = req.body.name;
school.nature = req.body.nature;
school.website = req.body.website;
school.facebookURL = req.body.facebookURL;
school.instagramURL = req.body.instagramURL;
...
req.school.save((err) => {
if (err) {
return res.send(err);
}
return res.json(school);
});
}
我的文档有很多属性,JSON 会变得很复杂。我对 Express 比较陌生,想知道是否有更优化的技巧。
假设加载的对象(学校)是一个mongodb集合。
您可以使用集合的 update 方法,而无需明确指定要更新的数据。
function put(req, res) {
const { school } = req;
school.update({
_id:ObjectId(req.param.id)
},
req.body)
.then(function (success) {
res.json();
})
.catch(function (error) {
res.status(404).send(err);
}); }
ps:目前在移动设备上,因此格式可能很差。
根据@LawrenceCherone 在评论中给我的提示,我想出了一个非常优雅的问题解决方案。我在模型模式中进行验证,所以这里的代码可以简短而有趣!
function put(req, res) {
const { school } = req;
Object.assign(school, req.body);
req.school.save((err) => {
if (err) {
return res.send(err);
}
return res.json(school);
});
}