如何使用 mongodb 存储/显示段落?

Posted

技术标签:

【中文标题】如何使用 mongodb 存储/显示段落?【英文标题】:How do I store/display paragraphs with mongodb? 【发布时间】:2015-06-18 23:18:17 【问题描述】:

我知道 mongo 不是用于格式化的,但是我怎样才能创建博客文章并以段落形式显示它而不是一个文本块?

例如,如果我有一个管理部分,我可以在其中创建博客文章并将其输入到 textarea 部分...

Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud 练习 ullamco 劳里斯 nisi ut aliquip ex ea commodo 结果。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。

Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud 实习 ullamco 劳动 nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。

Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud 实习 ullamco 劳动 nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。

它显示为...

Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。

【问题讨论】:

我不确定我是否明白你的问题。您能否举例说明您希望实现的目标以及实际得到的结果? 我会编辑原帖 嗨。您是将内容存储为文件还是字符串? 【参考方案1】:

这不是 MongoDB 的问题,但您发现了 html 的工作原理:)

当您提交 textarea 时,所有换行符只是发送到服务器的换行符(\n\r\n)。它们按原样存储在数据库中。 但是,在 HTML 中,换行符在表示文本时会被忽略并视为空格(除非您将其包装在 <pre></pre> 块中)。

解决方案是将所有\n 替换为<br /> 标签。如果您熟悉 php,那将使用 nl2br 函数,该函数已在此处移植到 javascript:http://phpjs.org/functions/nl2br/

【讨论】:

太好了,谢谢。我写了一个类似的函数,但不确定 MongoDB 是否有任何原生功能。这似乎有点hacky,但我想不是。再次感谢。 不,这不是hacky!但是,您不应该在数据库级别这样做,因为这只是关于数据表示。您应该在呈现数据的层上执行此操作(例如,在将其发送到模板之前,或者如果您正在开发 API 服务器,请在客户端执行此操作) 是的,我开发了一个 API,目前正在开发客户端。感谢大家的帮助。【参考方案2】:

这与 MongoDB 无关。您从 HTML textarea 元素获取文本,它具有“换行”(\n\r\r\n)字符作为段落分隔符。当您将其放入 HTML p 元素中时,这些新行将被解释为基本空格。您应该将这些“换行符”字符转换为 HTML br 元素或将每个文本块放入单独的 p 元素中。

检查这个 npm 包:https://www.npmjs.com/package/nl2br

您可以轻松编写更好的代码。

【讨论】:

String.prototype.nl2br = function() return this.replace(/\\n/g, "<br />"); 这是用 替换我的字符串中的 \n 但它没有被处理为 HTML。例如Lorem ipsum dolor\n sit amet. 变成 Lorem ipsum dolor<br /> sit amet. "Lorem ipsum dolor 坐下来。"是新行的 HTML 版本。任何浏览器都会将其实现为新行。您在哪个环境中打印结果以及您看到的结果是什么?例如,您不应该将输出放在
 元素中。
好的,谢谢。我最终添加了white-space: pre-line; 的CSS 现在我只需要添加一个角度过滤器,这样多个段落就不仅在一个<p> 标记中表示,而且在每个段落标记中表示。

以上是关于如何使用 mongodb 存储/显示段落?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CSS 仅显示段落的三行(不超过三行)? [复制]

如何在 MongoDB find() 中显示建议

在 sqlite 中存储文本段落

如何将内容段落转换为存储在 mysql 中?

执行操作时如何显示存储在 mongoDB 中的图像文件

如何获取 MongoDB 存储的视频文件的剪辑?