风帆闪光验证不起作用

时间:2013-12-19 05:30:03

标签: javascript node.js validation sails.js

我正在尝试验证控制器中的值,并将闪存错误消息发送到Sailsjs Framework中的EJS视图文件。

我收到以下错误消息:


 if(flash && flash.err) { 
>>   flash is not defined in ejs file.

我在config / policies.js

中添加了flash策略
 '*': 'flash', 

这就是我重定向到错误视图的方式..

var usernamePasswordRequiredError = [{
                      name: 'usernamePasswordRequired',
                      message: 'You must enter both a username and password.'
                    }]

                    req.session.flash = {
                      err: usernamePasswordRequiredError
                    }

                   res.redirect("/user/loginpage");
                   return; 

Flash.js内容


 Policy File:
    module.exports = function(req, res, next) {
    res.locals.flash = {};
    if(!req.session.flash) return next();
    res.locals.flash = _.clone(req.session.flash);
    req.session.flash = {};
    next();
};

帮助我解决视图文件中的 Flash未定义错误

3 个答案:

答案 0 :(得分:3)

Sails.js有connect-flash烤好的,所以我正在使用它:

在服务器上,设置:

req.flash('info', 'OHai');

在客户端上,获取:

res.req.flash('info');

这意味着我不必乱用_.clone()或那个大的要点,如果你做了多个req.flash('info', '...');调用,当你在它上面检索它时,你得到一个包含所有值的数组。客户端。当然,您也可以使用您想要的任何标签(不仅仅是“信息”)。

如果您需要更多详细信息,请与我们联系。

答案 1 :(得分:1)

使用irlnathan's screencast中建议的flash政策,应定义res.locals.flash对象,至少等于{},因此Express不应抛出您获得的错误。

但政策仅适用于控制器,而不仅仅适用于视图。

您确定sails是否从控制器提供ejs视图,而不是来自主config/routes.js配置文件?

答案 2 :(得分:0)

你的代码看起来非常接近我看到的要点,我喜欢这种方法比你的更多。它在精神上是一样的,但是在策略中会出现闪存错误和通知消息的设置。

https://gist.github.com/BenBarber/5700061