Jade / Mongo输出中的换行符
我已经阅读了关于这个问题的所有问题,但没有一个满足了我的需求。
我有一个简单的留言板,用户可以通过textarea发表评论。 这些存储在Mongo中,并通过玉器显示
但是所有的换行符都丢失了。
它们在数据库中存储为\r\n
,但在渲染时不会显示。
用<br />
replace它们也没有帮助,因为它们只是呈现为string。
用<pre>
包装注释确实有帮助…但是它会阻止文本在embedded的图片周围浮动。
有没有简单的方法来输出文本JUST,因为它被存储?
这是与<span>
和<div>
而不是<pre>
:这是我想如何浮动,但换行不呈现
玉模板:
if (user) p You are logged in as #{user.username} 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} | span#commentCount (#{post.comments.length}) | created at span#createdAt #{post.createdAt} | by 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>
块(除非您以某种方式将其过滤掉),否则这可能会给您带来潜在的安全问题。