我们如何在ejs模板中要求参数,以使未定义参数时ejs.render失败?

时间:2019-06-04 20:42:35

标签: ejs

我需要设置参数,以便如果传递给模板的参数未定义,则模板渲染会失败并显示错误。

示例模板:

let template = "Hello <%=info.name%>, this is a test template.";

当调用render时,我发送以下内容:

let data = {
    info: {
        name: "Bob"
    }
};
let rendered_template = ejs.render(template, data);

这为rendered_template提供了以下值:

Hello Bob, this is a test template.

但是,如果info.name未定义,则模板仍将被呈现(仅当info本身未定义时,模板将失败,因为它将无法读取属性name的值),结果如下:

Hello , this is a test template.

如何将info.name参数设置为必需参数,以便在info.name的值未定义的情况下ejs.render失败?

1 个答案:

答案 0 :(得分:0)

您可以将include函数与if / else块结合使用:

<% if (info.name != undefined) { %>
    <%- include 'someTemplate' %>
<% } %>
<% else { %>
    <%- include 'someOtherTemplate' %>
<% } %>

someOtherTemplate是未定义info.name时要呈现的错误页面。

更新

要通过node.js发送错误消息,您可以执行以下操作:

app.get('/someRoute', function(req, res) {
    if (info.name) {
      res.render('someTemplate', {info:info});
    }
    else {
      res.status(403);
    }
});