Как вывести из mysql контент содержащий в себе html при помощи node js
Суть в названии вопроса. Подробнее... на node.js делаю запрос к БД
const express = require('express')
const router = express.Router()
const pool = require('../database')
router.get('/', async (req, res) => {
const articles = await pool.query('SELECT * FROM k2 WHERE (c_id = 72 OR c_parent = 72) AND i_publ = 1 AND c_parent > 0')
res.render('about-institution/about-institution', { articles })
})
Через шаблонизатор вывожу полученные данные
{{#each articles}}
<div class="col-md-3">
<div class="card text-center">
<div class="card-body">
<a href="{{c_alias}}/{{i_alias}}">
<h3 class="card-title text-uppercase">
{{i_title}}
</h3>
</a>
<p>{{i_intro}}{{i_full}}</p>
</div>
</div>
</div>
{{/each}}
В переменных i_intro и i_full текст с html. Проблема в том, что html выводит, как обычный текст.
Пробовал до этого выводить с использованием react, столкнулся с подобной проблемой, но думал, что это из за jsx. Подскажите как решить данную проблему (можно с/без react'a, но лучше оба варианта) P.S.: шаблонизатор handelbars, с использованием реакта изспользовал для создания проекта create-react-app
Ответы (1 шт):
Автор решения: RTW
→ Ссылка
В бд стоит хранить данные, а не html и проблем не будет. Всё что находится в квадратных скобках будет выводится как текст для безопасности.
Если же нужно вставить в реакте html, используйте dangerouslySetInnerHTML.
function createMarkup() {
return {__html: 'Первый · Второй'};
}
function MyComponent() {
return <div dangerouslySetInnerHTML={createMarkup()} />;
}