如何解决无法将属性“用户名”设置为null
发生错误,已登录的用户将尝试更新其帐户用户名,但遇到错误。在我的一生中,我无法弄清为什么有时(也许有1/20个用户遇到)为什么找不到当前用户。用户只有登录才能访问此页面。错误是:
投掷者; //未处理的“错误”事件
TypeError:无法将属性“用户名”设置为空
错误似乎在这里发生: user.username = req.body.username;
router.post("/updateAccount",function (req,res) {
if (req.user) {
User.findOne({username: req.body.currentUser},function (err,user) {
if (err) {
return done(err);
}
user.username = req.body.username;
user.save(function (err) {
if (err) {
req.flash("error","It looks like that email address is taken.");
res.redirect('back')
} else {
req.logout();
req.login(user,function (err) {
if (err) console.log('There was an account error' + err)
req.flash("success","Your account has been created! Your username is " + user.username);
res.redirect('/results')
});
}
});
});
} else {
res.redirect('/results')
}
});
解决方法
如果
user
查询(如docs中所述)找不到匹配的用户,则 User.findOne({username: req.body.currentUser}
将为null。
因此,您应该添加另一种检查(如果是这种情况)并进行适当处理:
User.findOne({username: req.body.currentUser},function (err,user) {
if (err) {
return done(err);
}
if (!user) {
// handle this case as user.username = req.body.username will fail
}
// ... rest of the code
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。