44

可以在 MongoDB 中存储 HTML 吗?有缺点吗?有更好的选择吗?

我对 JSON 有点陌生,但我计划将我的 WordPress 网站迁移到自定义的流星/mongodb 网站。

在 WordPress 中,我们的“帖子”本质上是产品记录,“主要内容”是产品的描述。这些描述包含一些 HTML 标记,例如“强”标记、中断标记和 href 超链接。

<p>Who hasn't wished for a mini-Roomba to handle the arduous task of cleaning their iPhone screen? Now your dreams have come true! See the Takara web page for a <a href="http://www.takaratomy.co.jp/products/automee/" title="automee s" target="_blank">demo video.</a><strong>Colors: </strong> White, Red, Orange and Blue Runs on a single AA battery.<br> 1,575 yen</p>

与 XML 不同,JSON 缺少 CDATA 之类的东西。尝试将 HTML 放在我的 JSON 样式的文档描述字段中是不是一个坏主意?这样做是否有特殊的转义字符?还是应该将 HTML 产品描述存储为外部静态文件?还是有其他最佳实践?

{
'_id':'236',
'name':'Tokyo Marui M9A1 Gas Blow Back Airsoft Gun',
'description':'<p>html here?</p>',
'tags': ['toys','outdoors']
...
}

任何提示,建议,链接表示赞赏!

编辑

添加了示例产品描述文本。

编辑2

我发现这篇 stackoverflow 文章: 如何在 MongoDB 中存储 HTML 数据?

另一个在谷歌 https://groups.google.com/forum/?fromgroups=#!topic/mongodb-user/HW5XB5yox20

他们似乎说应该没问题。但是没有太多讨论,所以只是寻求更多的确认。

编辑3

附加参考 https://groups.google.com/forum/?fromgroups=#!topic/mongodb-user/0m8KJ7mPWiQ

4

2 回答 2

23

好的,我似乎找到了足够的文章来得出结论:

在 MongoDB 中将 html 片段和文件存储为标准 utf-8 编码字符串非常好,但有一些注意事项: http ://docs.mongodb.org/manual/faq/developers/#when-should-i-use-gridfs

于 2013-03-07T15:13:28.390 回答
1

您可以将其存储为字符串的常规文本类型,但在保存到数据库之前验证 HTML。这是一个使用express-validatorsanitize-html的示例

body('description').not().isEmpty().trim().isLength({ min: 3 }).customSanitizer(value => {
    return sanitizeHtml(value, {
        exclusiveFilter: (frame) => {
            return frame.tag === 'script';
        },
        textFilter: (value) => {
            return value.replace(/\\n|\s\s/g, "").trim()
        }
    })
})

在这里,我在描述 req.body.description 中从用户那里获取 HTML 并且您可以看到 express-validator 来验证特定规则和 sanitize-html 来控制我在默认选项旁边需要什么,并且我将脚本标签剥离为以及换行符和空格。我希望这会有所帮助。

于 2020-07-12T22:01:44.300 回答