【问题标题】:Node.js check mongoose validation and alert userNode.js 检查猫鼬验证并提醒用户
【发布时间】:2013-11-29 16:45:14
【问题描述】:

您好,我正在使用 mongoose 和 mongoose uniqure 验证器,这是一个用于轻松验证 mongoose 的模块。

我想知道解决此问题的最佳方法:当用户尝试提交与另一个“生成器”同名的“生成器”时,在没有重新加载页面,或者至少无需重置其表单数据。

验证方面有效,但我愿意以任何其他方式验证和提醒

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);}
})
};

【问题讨论】:

    标签: jquery node.js mongodb validation mongoose


    【解决方案1】:

    我之前使用过的一种方法是使用connect-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,其中包含一个数组(可以为空),您可以使用该数组向用户显示错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-02
      • 2016-09-23
      • 2014-12-28
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多