Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我需要呈现HTML和“标记”时,在数据库中存储支持标记的字段的最佳方式是什么;“简单文本”;意见?_Javascript_Asp.net Mvc_Database Design_Markdown - Fatal编程技术网

Javascript 当我需要呈现HTML和“标记”时,在数据库中存储支持标记的字段的最佳方式是什么;“简单文本”;意见?

Javascript 当我需要呈现HTML和“标记”时,在数据库中存储支持标记的字段的最佳方式是什么;“简单文本”;意见?,javascript,asp.net-mvc,database-design,markdown,Javascript,Asp.net Mvc,Database Design,Markdown,我有一个数据库,我有一个网站前端。我的前端有一个字段,现在是文本,但我没有。我试图找出正确的方法来存储在我的数据库中,因为我有各种需要支持的视图(PDF报告、网页、excel文件等) 我担心的是,由于这些视图中的一些不支持HTML,我不想只拥有该字段的HTML版本 我应该存储2个副本(仅一个文本和一个HTML?),还是应该存储HTML并在渲染到Excel时动态尝试删除它们的HTML标记 我需要找出存储在数据库中的正确格式,以便能够同时呈现以下两种格式: HTML,以及 常规文本(无标记或HTM

我有一个数据库,我有一个网站前端。我的前端有一个字段,现在是文本,但我没有。我试图找出正确的方法来存储在我的数据库中,因为我有各种需要支持的视图(PDF报告、网页、excel文件等)

我担心的是,由于这些视图中的一些不支持HTML,我不想只拥有该字段的HTML版本

我应该存储2个副本(仅一个文本和一个HTML?),还是应该存储HTML并在渲染到Excel时动态尝试删除它们的HTML标记

我需要找出存储在数据库中的正确格式,以便能够同时呈现以下两种格式:

  • HTML,以及
  • 常规文本(无标记或HTML语法)

任何建议都将不胜感激,因为我不想走错路。我的观点是,我不想在Excel输出中显示任何HTML标记或标记语法。

您需要以规范格式存储数据。也就是说,在数据库中使用一种真正的格式。听起来这种格式应该是包含标记的文本列。这回答了您问题中的数据库设计部分


然后,根据需要导出的格式,应采用规范格式并将其转换为所需的输出格式。这可能只是输出标记文本,或者通过某种解析器运行它来删除标记或将其转换为HTML。

我建议将其存储为HTML格式,因为在这种情况下,HTML是最丰富的格式,并在获取其他格式(如PDF、Latex或其他格式)的数据时删除标记。在下面的问题中,您将找到一种轻松删除标记的方法

在我看来,将数据(原始和降级)存储在两个单独的字段中是浪费空间,但也是一个完整性问题,因为理论上,其中一个字段可以在不更改第二个字段的情况下进行修改


祝你好运

大多数人似乎都在说,只需将数据作为HTML存储在数据库中,然后将其处理为纯文本。我认为这有一些不利之处:

  • 您可能需要应用程序代码来剥离HTML并提取纯文本。想象一下,如果您在SQL Server中执行此操作。如果要编写纯文本版本的存储过程/查询,该怎么办?如何在SQL中提取纯文本?使用函数是可能的,但这需要大量的工作

  • 处理HTML blob可能很慢。我可以想象,对于小的HTML blob,速度会非常快,但肯定会比仅仅读取纯文本字段有更多的开销

  • HTML解析器并不总是工作得很好/它们可能很复杂。其思想是,您的用户可以非常有创造性地插入与解析器不兼容的blob。我从经验中知道,从HTML中很好地提取纯文本并不总是微不足道的

  • 我建议大多数电子邮件提供商做什么:

  • 存储富文本/HTML版本和纯文本版本。数据库中有两个字段
  • 与电子邮件提供商的用例一样,用户可能希望这两个字段具有不同的内容
  • 您可以编写一个UI函数,让用户输入HTML,然后通过应用程序将其转换为纯文本版本。这为用户提供了一个很好的起点,他们可以在保存到数据库之前对纯文本版本进行按摩/编辑
  • 始终存储源代码,在您的情况下,它是降价的

  • 还存储经常使用的格式

  • 对使用频率较低的格式使用按需转换/呈现

    说明:

  • 总是有源头。您可能需要它用于各种用途,例如,可以编辑相同的输入、审计跟踪、调试等

  • 没有处理器/ram的开销如果经常请求相同的格式,您可以用磁盘存储进行交易,这与Formar相比是便宜的

  • 偶尔头顶,见#2

  • 这样决定:

  • 存储原始数据(带有标记的文本)
  • 动态生成派生数据(HTML和纯文本)
  • 衡量绩效:
    • 如果可以接受,你就完了,呜呜
    • 如果不是,则缓存派生数据
  • 缓存可以通过多种方式完成。。。您可以立即生成派生数据,并将其存储在数据库中,也可以最初存储空值并延迟生成(如果需要)。您甚至可以将其缓存在数据库之外


    但无论您做什么,都要确保缓存永远不会“过时”——即,当原始数据发生更改时,缓存中的派生数据必须重新生成,或者至少以某种方式标记为“脏”。一种方法是通过触发器。

    如果存储不是问题,我想我会做的是存储规范版本,但从中自动生成,持久化计算字段,任何其他可能需要的版本。您希望字段被持久化,因为每次需要数据时进行转换是毫无意义的。您希望计算它们,因为您不希望它们与规范版本不同步


    本质上,这是将数据库用作其他版本的缓存,但缓存可保证数据完整性。

    您只需存储标记,并在需要时进行渲染。如何将标记本身渲染为常规文本?标记已经是常规文本。您的意思是要删除特定于标记的标记吗?也就是说,
    *foo*
    将变成
    foo
    ?我打赌有一个图书馆可以做到这一点。对我来说,这似乎是一个毫无意义的事业。当然,降价的主要优势在于它的可读性