如何组织用Javascript / Node编写的长SQL语句

时间:2016-06-21 13:21:28

标签: javascript sql node.js mariadb

我写了一个微服务,它正在对SQL数据库进行外部调用。我有一个js文件,专门用于形成一个字符串的这些可怕的查询..

let data_example = 'SELECT * \
WHERE BLAH = BLAH AND \
....';

它几乎没有人类可读,看起来很糟糕。存储/组织或处理需要在Node中存储和调用的长SQL查询字符串的最佳方法是什么?

1 个答案:

答案 0 :(得分:5)

你有几个选择。

  1. 您可以将它们存储在程序启动时读取的文件中,这样您就可以在一个了解SQL的工具中创建它们,甚至可以连接到您的数据库为您自动完成一些事情,可以帮助您格式化,进行语法突出显示等。

  2. 您可以使用ES2015(" ES6")template strings(也称为"模板文字"):

    let data_example = `
        SELECT *
        WHERE BLAH = BLAH AND ...
    `;
    

    模板字符串可以跨越行(请注意,换行符和后续行开头的空格 是字符串的一部分。)

    请确保您不使用模板字符串的功能通过(隐藏)字符串连接填充参数,因为That Would Be Wrong™。 :-)就是说,就像你不会这样做:

    // We know NOT to do this
    example = "WHERE SomeColumn = '" + userInputValue + "'";
    

    不要使用模板字符串的隐藏字符串连接执行相同的操作:

    // We also know NOT to do this
    example = `WHERE SomeColumn = ${userInputValue};`
    

    ....这是你如何使用模板字符串进行字符串连接。如果您习惯使用模板字符串,那么错误地执行该操作将非常容易,并且具有SQL注入向量。

  3. 两种选择都可能有用例。