Node.js检查mongoose验证并提醒用户

时间:2013-11-16 06:28:38

标签: jquery node.js mongodb validation mongoose

您好我正在使用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);}
})
};

1 个答案:

答案 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,其中包含一个数组(可以为空),您可以使用该数组向用户显示错误。