我正在尝试验证控制器中的值,并将闪存错误消息发送到Sailsjs框架中的EJS视图文件。
我收到以下错误消息:
if(flash && flash.err) { >> flash is not defined in ejs file.
我已经在config/policies.js中添加了闪存策略
'*': '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(); };
帮助我解决此闪存不是视图文件中定义的错误。
sails.js已经加入了connect-flash
,所以我使用了以下内容:
在服务器上,要设置:
req.flash('info', 'OHai');
在客户端上,获取:
res.req.flash('info');
这意味着我不必在_.clone()
或那个大的要领上折腾,而且如果您执行多个req.flash('info','...');
调用,那么当您在客户端检索它时,就会得到一个包含所有值的数组。当然,你也可以使用任何你想要的标签(不仅仅是'info')。
如果你需要更多的细节请告诉我。