Express.js EJS не рендеринг моего HTML

Я использую Express.js с EJS для визуализации ответа на запрос к базе данных в виде неупорядоченного списка HTML. Я также использую http://json2html.com/. Я не получаю никаких ошибок, но элементы моего списка не отображаются как HTML. Что я делаю неправильно?

Страница отображается в моем браузере, как это -

введите описание изображения здесь

Мой Экспресс-маршрутизатор -

var $stmt = squel.select().from('GrpPractice').field('*').toString();

router.get('/', handler1);

function handler1(req, res) {
    db.all($stmt, function(err, rows) {
        var transform = {'tag':'li', 'html':'${Organization legal name}'};
        var html    = json2html.transform(rows, transform);
        res.render('index', { title: 'Group Practices', html });    
        //  res.send(rows);
        });
}

И мой шаблон EJS -

  <body>
    <h1><%= title %></h1>
    <p>Welcome to <%= title %></p>
    <ul>
        <%= html %> 
    </ul>
  </body>

Мои данные выглядят хорошо сформированными -

[{"Organization legal name":"23RD FAMILY MED LLC","Group Practice PAC ID":"3375715477","Number of Group Practice members":5,"First Name":"CHERL","Last Name":"MUES","Credential":"","Primary specialty":"NURSE PRACTITIONER"},{"Organization legal name":"23RD FAMILY MED LLC","Group Practice PAC ID":"3375715477","Number of Group Practice members":5,"First Name":"PAUL","Last Name":"GLOWACKI","Credential":"MD","Primary specialty":"FAMILY PRACTICE"},{"Organization legal name":"23RD FAMILY MED LLC","Group Practice PAC ID":"3375715477","Number of Group Practice members":5,"First Name":"MONTY","Last Name":"SELLON","Credential":"","Primary specialty":"FAMILY PRACTICE"},{"Organization legal name":"23RD FAMILY MED LLC","Group Practice PAC ID":"3375715477","Number of Group Practice members":5,"First Name":"MILO","Last Name":"ANDERSON","Credential":"","Primary specialty":"FAMILY PRACTICE"},{"Organization legal name":"23RD FAMILY MED LLC","Group Practice PAC ID":"3375715477","Number of Group Practice members":5,"First Name":"ANDREW","Last Name":"OPP","Credential":"","Primary specialty":"FAMILY PRACTICE"},{"Organization legal name":"3-D OPTICAL","Group Practice PAC ID":"1951361732","Number of Group Practice members":4,"First Name":"KRISTEN","Last Name":"KOSIR","Credential":"OD","Primary specialty":"OPTOMETRY"},{"Organization legal name":"3-D OPTICAL","Group Practice PAC ID":"1951361732","Number of Group Practice members":4,"First Name":"NIROPA","Last Name":"PRASAD","Credential":"","Primary specialty":"OPTOMETRY"},{"Organization legal name":"3-D OPTICAL","Group Practice PAC ID":"1951361732","Number of Group Practice members":4,"First Name":"ROBERT","Last Name":"MCCAMY","Credential":"OD","Primary specialty":"OPTOMETRY"},{"Organization legal name":"3-D OPTICAL","Group Practice PAC ID":"1951361732","Number of Group Practice members":4,"First Name":"DARREL","Last Name":"CRISSLER","Credential":"","Primary specialty":"OPTOMETRY"},{"Organization legal name":"5MD CONVENIENT CARE LLC","Group Practice PAC ID":"2567643026","Number of Group Practice members":4,"First Name":"JULIE","Last Name":"HATCH","Credential":"","Primary specialty":"NURSE PRACTITIONER"}]

Если я вхожу в консоль, это выглядит как действительный HTML

<li>23RD FAMILY MED LLC</li><li>23RD FAMILY MED LLC</li><li>23RD FAMILY MED LLC</li><li>23RD FAMILY MED LLC</li><li>23RD FAMILY MED LLC</li><li>3-D OPTICAL</li><li>3-D OPTICAL</li><li>3-D OPTICAL</li><li>3-D OPTICAL</li><li>5MD CONVENIENT CARE LLC</li>

Если я просматриваю исходный код страницы в браузере (спасибо Tomasz Jakub Rup), это не так верно...

 <body>
    <h1>Group Practices</h1>
    <p>Welcome to Group Practices</p>
    <ul>
        &lt;li&gt;23RD FAMILY MED LLC&lt;/li&gt;&lt;li&gt;23RD FAMILY MED LLC&lt;/li&gt;&lt;li&gt;23RD FAMILY MED LLC&lt;/li&gt;&lt;li&gt;23RD FAMILY MED LLC&lt;/li&gt;&lt;li&gt;23RD FAMILY MED LLC&lt;/li&gt;&lt;li&gt;3-D OPTICAL&lt;/li&gt;&lt;li&gt;3-D OPTICAL&lt;/li&gt;&lt;li&gt;3-D OPTICAL&lt;/li&gt;&lt;li&gt;3-D OPTICAL&lt;/li&gt;&lt;li&gt;5MD CONVENIENT CARE LLC&lt;/li&gt; 
    </ul>
  </body>

Кто-нибудь может определить, что я делаю не так? Похоже, что мой браузер интерпретирует это как текстовую строку, а не разметку.

1 ответ

Решение

Замещать <%= html %> с <%- html %>

EJS имеет менее популярное соглашение:

<%= произвести экранированную стоимость

<%- производить необеспеченную стоимость

У lodash.template есть обратное соглашение (более популярное):

<%- произвести экранированную стоимость

<%= производить необеспеченную стоимость

Другие вопросы по тегам