我有一张提交给快递应用的表单:
app.post('/myform', function (req, res) {
var content = new registration(req.body);
content.save(function(errObj){
if(errObj){
res.render('registration',{error: errObj});
} else {
res.render('thankyou');
}
});
如果将表单数据保存到mongoDb时出错,我想在表单顶部显示这些错误,以便将错误对象传递回ejs模板:
<% if (error) { %>
<li><%= error %></li>
<% } %>
但是当我最初加载页面并且还没有错误(因为表单尚未提交)时,我在页面上收到错误并且表单未呈现:
error is not defined
我怎样才能解决这个问题?
答案 0 :(得分:3)
您可以使用错误属性中的值,该值不会进入if:
res.render('registration', {error: false});
答案 1 :(得分:1)
检查此代码
<% if (typeof error ='object' && error)
{ %> <li><%= error %></li>
<% } %>
答案 2 :(得分:1)
<强>
res.render('registration', {error: false});
强>
error
是否存在,如下所示:
<% if( typeof(error) =="undefined")%>
//检查变量的类型
error
对象来查看变量locals
是否存在:<强>
<% if(locals.error) %>
强>
答案 3 :(得分:1)
我遇到了同样的问题,您可以通过两种不同的方式尝试它。
router.get('/login', function(req, res, next) {
res.render('login', { title: 'Please login', error: false });
});
<% if(typeof error != "undefined" && error.username) { %>
<p><%= error.username.msg %></p>
<%} %>
答案 4 :(得分:0)
通过运行命令再次尝试启动服务器 $ node server.js
注意:server.js是用户定义的文件。
答案 5 :(得分:0)
我知道这是几年前的事,但以防万一其他人陷入困境。
我通过将变量的范围更改为global解决了此问题。如此简单的解决方法,但花了我几个小时才弄清楚。
我没有将变量保存在app.post
方法中,而是将所有内容都移到了app.get中。然后,我在res.redirect()
方法中添加了app.post
,并在js file
的顶部声明了所有变量。