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 检查猫鼬验证并提醒用户的主要内容,如果未能解决你的问题,请参考以下文章