【问题标题】:Messages Dictionary消息字典
【发布时间】:2018-12-09 14:43:11
【问题描述】:

当数据库出现错误时,我们的编程团队发生冲突。

当 db 遇到这样的错误时:

“消息 547,第 16 级,状态 0,第 1 行

DELETE 语句与 REFERENCE 约束冲突...“。

UI 必须显示可理解的消息,如下所示:

“您无法删除此项目。用过。”

数据库团队(MS SQL)通过“引发错误”返回纯错误消息,并期望后端团队(Node js)或前端团队(Angular)将此消息转换为用户可理解的消息并显示给用户。但是后端团队和前端团队都说没有优化,db消息必须转换成数据库中用户可以理解的消息。

这个问题有什么标准吗?

【问题讨论】:

  • 系统错误信息错过了一个重点。它是在什么活动背景下发生的?创建记录、更新记录、删除记录?这可能会更改您要返回的消息。不要依赖可能发生变化的系统消息或数字。我有一个基于处理返回消息的业务层 - 在任何更新之前执行尽可能多的有用验证。我没有将消息分离到单独的存储中,而是将它们嵌入到业务层代码中。您可以有一个数据库表或文件供参考,甚至可以使用占位符来扩展常见消息

标签: node.js sql-server angular


【解决方案1】:

错误消息内容的责任不应在数据库中。例如,同一个数据库可能用于各种不同的应用程序,用户来自不同的文化:数据库将不知道正在使用的特定用户界面上的本地化是什么。

即使您的数据层返回特定错误,在不同的情况下,这也可能意味着不同的事情。所以通常的做法是在“数据”层之上构建“业务”层。该业务层可以决定是否存在问题。此业务层可以被多个不同的“用户界面”层(例如 Web 应用、Windows 应用、手机应用等)甚至其他应用程序的业务层重用。

但是业务层应该只返回问题所在的指示(包括任何可能相关的细节)。最终,用户界面必须负责以正确本地化的方式构建错误消息。大多数 UI 层都有为此目的存储本地化资源的方法。

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 1970-01-01
    • 2014-08-30
    • 2011-12-09
    • 2021-02-10
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多