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

Posted

技术标签:

【中文标题】Node.js 检查猫鼬验证并提醒用户【英文标题】:Node.js check mongoose validation and alert user 【发布时间】: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);
)
;

【问题讨论】:

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

【讨论】:

以上是关于Node.js 检查猫鼬验证并提醒用户的主要内容,如果未能解决你的问题,请参考以下文章

Node.js,基于日期时间的提醒

如何检查用户是不是在 Firebase 和 Express/Node.js 中经过身份验证?

为啥在 Node.js 中使用猫鼬模式

ValidationError:验证失败猫鼬

有没有办法设置猫鼬来检查两个值是不是在一个模式中匹配?

在结果消息猫鼬节点验证中显示实际错误