ejs 模板变量未在页面加载和错误中定义

Mik*_*gin 2 ejs node.js express

我有一个提交给快递应用的表格:

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');
    }
});
Run Code Online (Sandbox Code Playgroud)

如果将表单数据保存到 mongoDb 时出现任何错误,我想在表单顶部显示这些错误,以便将错误对象传递回 ejs 模板:

<% if (error) { %>
   <li><%= error %></li>  
<% } %>
Run Code Online (Sandbox Code Playgroud)

但是当我最初加载页面并且还没有错误时(因为尚未提交表单)我在页面上收到一个错误并且表单没有呈现:

error is not defined
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

Nat*_*hat 16

您可以通过三种方式进行检查:-

  • 使用 Amit 建议的方法:

res.render('registration', {error: false});

  • 检查是否error存在这样的:

<% if( typeof(error) =="undefined")%> //检查变量类型

  • 您可以error通过locals像这样访问对象来查看变量是否存在:

<% if(locals.error) %>


Ami*_*mit 5

您可以在 error 属性中使用一个不会进入 if 的值:

res.render('registration', {error: false});
Run Code Online (Sandbox Code Playgroud)


dan*_*iel 5

以下代码解释了一个工作示例:

<% if (typeof error ='object' && error) { %>
    <li><%= error %></li>  
<% } %>
Run Code Online (Sandbox Code Playgroud)