Miha Jamsek
Miha Jamsek

Reputation: 1273

Display line break from mysql text type to ejs

I have MySQL table with column PROJ_ABOUT which is type TEXT.

I inserted multiple rows into this column and now I am trying to diplay this entry in my Express.js app using ejs engine.

    <h2>About project</h2>
    <p><%= rows.PROJ_ABOUT %></p>

However, when the text is inserted into ejs file, all line breaks are lost.

    **Instead of this:**
    Line 1
    Line 2
    **I get this:**
    Line1Line2

I tried getting around this by saving entry to database with <br /> instead of '\n' but instead of getting line breaks I got text with br tags written as common text.

    **So i got this:**
    Line1<br />Line2

Now, I saw the answers for PHP, but i am using Node.js with ejs templating engine and I am looking for a solution using JS.

Upvotes: 0

Views: 4941

Answers (3)

subrahmanya bhat
subrahmanya bhat

Reputation: 598

use this

<p><%- rows.PROJ_ABOUT %></p>

Upvotes: 1

fremail
fremail

Reputation: 330

Try this EJS tag <%- %> instead of <%= %>. The first EJS tag will not escape HTML.

So just wrap your text with <br> to <%- rows.PROJ_ABOUT %>

To change line ends like \n to <br> in your text you can use nl2br package (on server-side).

Upvotes: 1

Ivan Drinchev
Ivan Drinchev

Reputation: 19591

You need to use the proper EJS syntax for rendering unescaped HTML, otherwise you will get the escaped strings.

Short answer would be :

<!--    V You should use - instead of = -->
<p>   <%- rows.PROJ_ABOUT %></p> 

this will render your rows.PROJ_ABOUT variable as unescaped HTML

Upvotes: 3

Related Questions