您好我正在使用mongoose与mongoose uniqure验证器,这是一个易于进行猫鼬验证的模块。
我想知道解决此问题的最佳方法:当用户尝试提交与另一个“生成器”同名的“生成器”时,最好的方法是在没有“生成器”的情况下提醒用户重新加载页面,或者至少不必重置表单数据。
验证方面有效,但我愿意以任何其他方式验证和提醒
exports.new = function(req,res){
///generator/new
res.render("new",{title:"New Generator"});
};
exports.create = function(req, res){
new Generator({
name: req.body.name,
words: req.body.words
}).save(function(err,docs){
if(err){
console.log(err);
//This is where it returns validation errors.
//I am wondering the best way to alert the user of this.
}else{
res.redirect('/generators/'+docs.name);}
})
};
答案 0 :(得分:1)
我以前使用的一种方法是使用connect-flash
(这要求你使用会话)。
有了它,您可以在用户会话中存储“flash消息”,然后您可以通过模板引擎显示它。
在您的情况下,代码看起来像这样:
// somewhere in your app setup
var flash = require('connect-flash');
...
app.use(flash());
...
// your routes:
exports.new = function(req, res) {
res.render("new", {
title : "New Generator"
errors : req.flash('error') // pass all 'error' messages to template
});
};
exports.create = function(req, res) {
new Generator({
name : req.body.name,
words : req.body.words
}).save(function(err,docs){
if (err) {
console.log(err);
// store the error message as a flash message
req.flash('error', err.message);
// redirect back to /new
res.redirect('/new');
} else {
res.redirect('/generators/' + docs.name);
}
})
};
因此,当保存触发错误时,将存储错误并将用户重定向回“新”页面。在“新”模板中,您将获得一个变量errors
,其中包含一个数组(可以为空),您可以使用该数组向用户显示错误。