javascript - 如何根据参数以更高效更好的方式分析数据库表中的字符串?

标签 javascript typescript architecture

我有两个数据库,分别连接到两个不同的后端应用程序服务器。两台服务器都与一个 Web 应用程序通信。现在,可以简单地更改 UI 上的 url 参数来选择要与哪个服务通信,即,如果您设置 serverUrl='abc' , 它会指向 server Adatabase A , 如果你设置 serverUrl='cde' , 它会指向 server Bdatabase B .我在前端进行了工作流测试,这两种服务基本上都是通用的。但是db A中的字段名称和 db B是不同的。即,如果我在 db A 中有一个名为“webid”的字段名称,相同的字段名称在 Webid 中称为“db B ”同样,code 中有更多类似“db A ”的内容是 CODE 中的“db B ” .因此,我没有重复我的测试,而是简单地创建了一个函数,我只是根据 serverUrl 检查它是否为 db A。 , 返回 "code"否则返回 "CODE ", 以此类推数据库中的所有字段名称。因此,在我的测试中,不是简单地使用普通的 fieldname 创建查询, 我传入 checkField("code")它根据条件 (serverUrl) 返回一个字符串并执行查询。

函数如下:

function checkField(str: string) : string {
          let server = serverUrl === 'abc' ? true : false;
           switch (args[0].toLowerCase()) {
            case 'code':
                return serverUrl ? 'code' : 'CODE';
            case 'webid':
                return serverUrl ? 'webid' : 'Webid';
            case 'pkid':
                return serverUrl ? 'pkid' : 'PkId';
            case 'barcode':
                return serverUrl ? 'barcode' : 'Barcode';
            case 'price':
                return serverUrl ? 'price' : 'Price';
            case 'bestbefore':
                return serverUrl ? 'bestbefore' : 'BestBefore';
            case 'produce':
                return serverUrl ? 'produce' : 'Produce';
            case 'sales':
                return serverUrl ? 'sales' : 'Sales';
            case 'marketid':
                return serverUrl ? "marketid" : "MarketId";
            case 'regdate':
                return serverUrl ? "regdate" : "Regdate"; //and more fields
            default:
                return args[0]; 

}

所以,我想知道是否有更优雅的方式来进行这种比较。无论如何,我们可以在这里使用静态代码分析器吗?[我不太确定它们是什么]任何见解或指示都会很棒。 非常感谢。

最佳答案

洞察力是,当 serverUrl 为真时,您根本不需要 switch - 您总是返回与打开时相同的值。所以不要在每个 switch case 中都做测试,而是在这之前做一次:

function checkField(str: string) : string {
    if (serverUrl === 'abc')
        return str.toLowerCase();
    else
        switch (str.toLowerCase()) {
            case 'code': return 'CODE';
            case 'webid': return 'Webid';
            case 'pkid': return 'PkId';
            case 'barcode': return 'Barcode';
            case 'price': return 'Price';
            case 'bestbefore': return 'BestBefore';
            case 'produce': return 'Produce';
            case 'sales': return 'Sales';
            case 'marketid': return "MarketId";
            case 'regdate': return "Regdate";
            //and more fields
            default: return str;
        }
}

除了switch 语句,您还可以使用对象字面量或Map。作为查找表。

关于javascript - 如何根据参数以更高效更好的方式分析数据库表中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48892330/

相关文章:

javascript - jQuery 查询生成器 - 无法使其工作 - 未捕获的 TypeError : Cannot set property 'extendext' of undefined

javascript - Angular : Make Post Request From ErrorHandler?

javascript - 数组自动更改值

c# - 使用 DTO 而不是在公共(public)程序集中共享对实体的引用是否有好处?

database - 同一数据库中的多个公司

go - 客户端同步中的竞争条件

JavaScript 暴力破解 Web 表单

javascript - 扩展程序 chrome.storage 更新后是否会清除?

javascript - 单击链接时在跨度上切换类

dependencies - typescript 中有没有什么好的静态代码分析工具?