我有两个类似的代码,我认为它可以重复使用,但不知道从哪里开始。如果你能告诉我我的例子,或者把我链接到一篇没问题的文章。
我有一个更新用户信息的块。
exports.updateUser = function(req, res, next) {
User.findById(req.params.id, function(err, user) {
if (err) {
return next(err);
}
user.email = req.body.email || '';
user.firstname = req.body.firstname || '';
user.lastname = req.body.lastname || '';
user.save(function(err) {
if (err) {
return next(err);
}
req.flash('success', {
msg: 'User information updated.'
});
res.redirect('/users');
});
});
};
此块更新了我的用户帐户信息。
exports.updateAccount = function(req, res, next) {
User.findById(req.user.id, function(err, user) {
if (err) {
return next(err);
}
user.email = req.body.email || '';
user.firstname = req.body.firstname || '';
user.lastname = req.body.lastname || '';
user.save(function(err) {
if (err) {
return next(err);
}
req.flash('success', {
msg: 'Profile information updated.'
});
res.redirect('/account');
});
});
};
如何进行可重复使用的更新。
答案 0 :(得分:3)
看起来只有两件不同的东西,它们是字符串。将它们作为参数传递。
exports.updateAccount = function(req, res, next, path, message) { //add 2 parameters
User.findById(req.user.id, function(err, user) {
if (err) {
return next(err);
}
user.email = req.body.email || '';
user.firstname = req.body.firstname || '';
user.lastname = req.body.lastname || '';
user.save(function(err) {
if (err) {
return next(err);
}
req.flash('success', {
msg: message //message param
});
res.redirect(path); //path param
});
});
};
答案 1 :(得分:1)
您可以创建一个通用流程,并使用特定参数进行绑定,如下所示
function updateUser(message, url, req, res, next ){
var body = req.body;
User.findById(req.params.rid, function(err, user) {
if (err) {
return next(err);
}
user.email = body.email || '';
user.firstname = body.firstname || '';
user.lastname = body.lastname || '';
user.save(function(err) {
if (err) {
return next(err);
}
req.flash('success', {
msg: message
});
res.redirect(url);
});
});
}
exports.updateUser = updateUser.bind(this, "User information updated.", "/users");
exports.updateAccount = updateUser.bind(this, "Profile information updated.", "/account");