Как мы можем требовать параметр в шаблоне ejs, чтобы ejs.render завершался ошибкой, когда параметр не определен? - PullRequest
0 голосов
/ 04 июня 2019

Мне нужно установить параметр таким образом, чтобы, если параметр, передаваемый в шаблон, был неопределенным, рендеринг шаблона завершился с ошибкой.

Пример шаблона:

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

А при вызове рендера отправляю следующее:

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, чтобы ejs.render не работал, если значение info.name не определено?

1 Ответ

0 голосов
/ 06 июня 2019

Вы можете использовать функцию 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);
    }
});
...