gpt4 book ai didi

node.js:保存其值在条件回调中更改的对象

转载 作者:搜寻专家 更新时间:2023-11-01 00:41:39 25 4
gpt4 key购买 nike

我有以下代码来保存配置文件,只有在提供旧密码和新密码时才会更新密码。在模型中检查旧密码,因此我在回调中获取检查值。

以下代码的问题是我必须在回调内部和回调之后调用 user.save。重构它的最佳方法是什么,thx

  user.firstName = req.body.firstName;
user.lastName = req.body.lastName;

if (req.body.password)
if (req.body.newPassword)
//we want to change password
user.comparePassword(req.body.password, function(err, isMatch) {
if (!isMatch) {
return res.status(401).send({
message: 'Mot de passe actuel invalide'
});

}
user.password = req.body.newPassword;
user.save(function(err) {
if (err)
res.status(500).send({
message: "Une erreur est survenue lors de la mise à jour du profil"
});
var profile = {
displayName: getDisplayName(user),
pictureUrl: user.pictureUrl || config.defaultProfilePic,
};
profile.lastName = user.lastName;
profile.firstName = user.firstName;
res.send(profile);
});
});

user.save(function(err) {
if (err)
res.status(500).send({
message: "Une erreur est survenue lors de la mise à jour du profil"
});
var profile = {
displayName: getDisplayName(user),
pictureUrl: user.pictureUrl || config.defaultProfilePic,
};
profile.lastName = user.lastName;
profile.firstName = user.firstName;
res.send(profile);
});

编辑:我创建了一个函数 saveUser(user, res),我调用了两次。这是最好的解决方案吗?

最佳答案

为什么不创建一个在检查密码后或在其他情况下调用的“saveUser”函​​数:

function saveUser(user,res){
user.save(function(err) {
if (err)
res.status(500).send({
message: "Une erreur est survenue lors de la mise à jour du profil"
});
var profile = {
displayName: getDisplayName(user),
pictureUrl: user.pictureUrl || config.defaultProfilePic,
};
profile.lastName = user.lastName;
profile.firstName = user.firstName;
res.send(profile);
});
}

user.firstName = req.body.firstName;
user.lastName = req.body.lastName;

if (req.body.password) && (req.body.newPassword) {
//we want to change password
user.comparePassword(req.body.password, function(err, isMatch) {
if (!isMatch) {
return res.status(401).send({
message: 'Mot de passe actuel invalide'
});
}
user.password = req.body.newPassword;
saveUser(user,res);
});
} else {
saveUser(user,res);
}

另一种选择是使用 promise(使用 Q 库)

Q().then(checkPasswordChange).then(saveUser);

但我不是 promise 方面的专家,也没有时间编写确切的代码......

关于node.js:保存其值在条件回调中更改的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32205592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com