0

升级到 Express 3 后,我体验了实现 connect-flash 并让它工作的“乐趣”。

我是这样实现的:

var flash = require('connect-flash');

app.use(flash());

app.use( function (req, res, next) {
    res.locals.everyauth.user = req.user;
    res.locals.user = req.user;
    res.locals.flash = req.flash();
    next();
});

我在我的翡翠布局模板中显示闪光警报(所有页面都使用,并且对于 flash.info、flash.warning 等有类似的行),如下所示:

- if ('undefined' !== typeof flash.error && flash.error.length)
    - each msg in flash.error
        div.error= msg

一切都很好,除了当我通过 express 呈现我的 /login 和 /register 页面时,当我收到“未定义闪存”错误时。有任何想法吗?

4

1 回答 1

1

好吧,这并不漂亮,但我找到了解决方法。基本上,我已将第一个 if 语句添加到我的 express 模板中处理 flash 消息的块中:

- if (flash !== null)
    - if ('undefined' !== typeof flash.error && flash.error.length)
        - each msg in flash.error
            div.error= msg

    - if ('undefined' !== typeof flash.warning && flash.warning.length)
        - each msg in flash.warning
            div.warning= msg

    - if ('undefined' !== typeof flash.info && flash.info.length)
        - each msg in flash.info
            div.info= msg

    - if ('undefined' !== typeof flash.success && flash.success.length)
        - each msg in flash.success
            div.success= msg

然后,我在everyauth 的页面渲染语句中添加了一个局部变量,将flash 设置为null,如下所示(注册和登录页面需要一个):

.registerView('register.jade')
    .registerLocals({
        title: 'Hi there, I am a register page',
        flash: null
    })

就像我说的那样,它并不漂亮,但它似乎正在工作。

于 2012-12-12T13:41:23.097 回答