[英]How to make these two similar blocks codes reusable?
我有兩個類似的代碼,我認為它可能是可重用的,但不確定從哪里開始。 如果您可以顯示給我和示例,或將我鏈接到一篇文章,那將很好。
我有一個更新用戶信息的塊。
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');
});
});
};
如何進行可重用的更新。
看起來只有2個不同,它們是字符串。 將它們作為參數傳遞。
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
});
});
};
您可以創建通用流程,並綁定特定的參數,如下所示
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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.