0

我网站上的用户可以更改他们的密码。

问题是当服务器在处理过程中产生错误时,我必须设置一条警告消息并说这样的话:

'Warning, the password couldn't be changed, please try again!'

我做了两条快递路线

app.get('/editMode/:user',ensureAuthUser,routes.user.editMode);
app.get('/editMode/:user/:message',ensureAuthUser,routes.user.editMode);

第一个显示editMode模板
第二个应该显示editMode和来自服务器的消息

在editMode.js

var warn=null;
    if(req.params.message) warn=validWarn(req.params.warn) ?JSON.parse(req.params.message) :null;
    console.log('message value: '+req.params.message);
    console.log('warn value: '+warn);

在这两种情况下,当我重定向到 /editMode/+'email@user.com'+/+'warning message' 或 /editMode/+'email@user.com' 我得到

console.log(req.params.message)// value: undefined
console.log(warn)// value: null

如果我的数据库无法更改密码,为什么我不能向用户发送消息?

编辑 2

编辑模式渲染

return res.render('templates/edit_template,
                            {
                                title: title,
                                usuario: req.session.passport.user,
                                warning: warn || null,
                            })

在模板edit_template.jade

-if(warning && warning.length)
                    h2 Error: #{warning}
                -else
                    h2 success
4

1 回答 1

1

由于您正在使用会话,因此我会将警告存储在会话中:

if (theErrorOccurred)
{
  req.session.warning = 'this is your warning message';
}
else
{
  req.session.warning = null;
};
res.redirect('/editMode/...');

并将其传递给您的模板routes.user.editMode

return res.render('templates/edit_template', {
  title   : title,
  usuario : req.session.passport.user,
  warning : req.session.warning
});

还可以查看connect-flash作为在请求之间传递不同类型消息的更精细的方式。

于 2013-05-06T19:39:59.073 回答