Задать вопрос

Как при выводе данных из базы модифицировать одно из полей?

Нужно при получении данных из базы применить дополнение entities на поле "name" и преобразовать его в html код. Так как html код <p>Test (1)</p> попадает в базу данных в виде &lt;p&gt;Test&nbsp;(1)&lt;/p&gt;
Это нужно для того чтобы в таблице tabulator выводилось как html.
Node:
connection.query("SELECT * FROM database", function(error, results) {
    res.json(results);
});

Что получаем из базы:
[
   {
      "id": "1",
      "name": "&lt;p&gt;Test&nbsp;(1)&lt;/p&gt;"
   },
   {
      "id": "2",
      "name": "&lt;p&gt;Test&nbsp;(2)&lt;/p&gt;"
   },
   {
      "id": "3",
      "name": "&lt;p&gt;Test&nbsp;(3)&lt;/p&gt;"
   }
]
  • Вопрос задан
  • 121 просмотр
Подписаться 1 Простой 4 комментария
Решения вопроса 1
Alex_Geer
@Alex_Geer
System Engineer
Для преобразования HTML-кода в текст вам необходимо использовать функцию decodeEntities. В вашем случае, чтобы преобразовать поле "name" каждого объекта в HTML-код, вам нужно пройтись по массиву объектов с помощью метода map и применить функцию decodeEntities к полю "name". Вот пример кода на Node.js:
const entities = require('html-entities').AllHtmlEntities;

connection.query("SELECT * FROM database", function(error, results) {
    const decodedResults = results.map(result => {
        return {
            id: result.id,
            name: entities.decode(result.name)
        };
    });
    res.json(decodedResults);
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
У вас каша в голове. И вы все делаете неправильно.
Заменять теги на сущности надо не перед записью в БД, а перед выводом в HTML. Желательно - средствами этого "табулятора", если он это умеет.

Никакой HTML в БД хранить нельзя.
Любое HTML оформление надо добавлять средствами этого "табулятора".
В самом крайнем случае - в ноде, перед выводом

name: '<p>' + entities.encode(result.name) + '<p>'
Хотя это конечно говнокод и кровь из глаз.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы