Jade / Mongo输出中的换行符

我已经阅读了关于这个问题的所有问题,但没有一个满足了我的需求。

我有一个简单的留言板,用户可以通过textarea发表评论。 这些存储在Mongo中,并通过玉器显示

但是所有的换行符都丢失了。

它们在数据库中存储为\r\n ,但在渲染时不会显示。

<br />replace它们也没有帮助,因为它们只是呈现为string。

<pre>包装注释确实有帮助…但是它会阻止文本在embedded的图片周围浮动。

与预先分开的线

有没有简单的方法来输出文本JUST,因为它被存储?

这是与<span><div>而不是<pre> :这是我想如何浮动,但换行不呈现

span / div没有换行符

玉模板:

  if (user) p You are logged in as #{user.username} &nbsp; a(href='/logout') [Log Out] else a(href='/login') Log In .threadWrapper each post, i in posts .thread.col-md-12 a(href="/thread/#{post._id}") span#postTitle #{post.postTitle} | &nbsp; span#commentCount (#{post.comments.length}) | &nbsp;created at&nbsp; span#createdAt #{post.createdAt} | &nbsp;by&nbsp; span#op #{post.op} if (user) button.close.deleteThreadButton(type='submit', aria-label='Close') span(aria-hidden='true') × //button.deleteThreadButton(type="submit") X .ThreadContent if post.postFileLink case post.postFileType when "image/png" when "image/gif" when "image/jpeg" img(src="/files/#{post.postFileLink}") when "video/mp4" when "video/webm" video(width="200", height="150", controls) source(src="/files/#{post.postFileLink}", type="#{post.postFileType}") | Sorry, your browser does not support the video tag. No Videos for you! span#threadContent #{post.postContent} .clearfix 

你的数据库确实包含存储的文本,但textarea的句柄换行符不同于“常规”HTML元素(如<div><p>等),其中连续的空白序列被合并为一个空格。

你可以用CSS解决它。

例如:

 - var text = 'foo\r\nbar\r\nxxx'; p(style = 'white-space: pre-wrap')= text 

或者,您可以将换行符replace为<br>并使Jade不会转义输出:

 - var text = 'foo\r\nbar\r\nxxx'.replace(/\r\n/g, '<br>'); p !{text} 

但是,如果您的用户在注释中input恶意的<script>块(除非您以某种方式将其过滤掉),否则这可能会给您带来潜在的安全问题。