可以在MongoDB中存储HTML吗?是否存在不利因素?有更好的选择吗?
我对JSON有点陌生,但我计划将我的WordPress站点迁移到自定义的meteor/mongodb站点。
在WordPress中,我们的“帖子”本质上是产品记录,而“主要内容”是产品的描述。这些描述包含一些HTML标记,例如“strong”标记、break标记和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之类的东西。尝试在JSON风格的文档描述字段中放置HTML是个坏主意吗?是否有特殊的转义字符来执行此操作?还是应该将HTML产品描述存储为外部静态文件?是否有其他最佳做法?
{
'_id':'236',
'name':'Tokyo Marui M9A1 Gas Blow Back Airsoft Gun',
'description':'<p>html here?</p>',
'tags': ['toys','outdoors']
...
}
任何提示,建议,链接赞赏!
编辑
添加了样品产品描述文本。
EDIT2
我发现了这篇StackOverflow文章:How to store HTML data in MongoDB?
另一个在谷歌https://groups.google.com/forum/?fromgroups=#!topic/mongodb-user/HW5XB5yox20
他们好像说应该没问题。但没有太多的讨论,所以只是寻求更多的确认。
编辑3
其他参考https://groups.google.com/forum/?fromgroups=#!topic/mongodb-user/0m8KJ7mPWiQ
2条答案
按热度按时间2j4z5cfb1#
好吧,我似乎已经找到了足够的文章来总结:
在MongoDB中将html片段和文件存储为标准的utf-8编码字符串是非常好的,但有一些注意事项,在MongoDB文档“何时应该使用GridFS”中有说明(更多关于GridFS here)
GridFS是用于存储和检索超过BSON文档大小限制16 MB的文件的规范。
GridFS将文件分成多个部分或块,并将每个块存储为单独的文档,而不是将文件存储在单个文档中。
在MongoDB中何时使用GridFS
在MongoDB中,使用GridFS存储大于16 MB的文件。 如果需要原子地更新整个文件的内容,请不要使用GridFS*。
iklwldmw2#
您可以将其存储为String的常规文本类型,但在保存到数据库之前要验证HTML。下面是使用express-validator和sanitize-html的示例
在这里,我从用户的描述req.body.description中获取HTML,正如你所看到的,express-validator用于验证特定的规则,sanitize-html用于控制我所需要的默认选项,我正在剥离脚本标签以及新的行字符和空格。希望能帮上忙。