如何组织用 Javascript/Node 编写的长 SQL 语句
How to organize a long SQL statement written in Javascript/Node
我编写了一个对 SQL 数据库进行外部调用的微服务。我有一个 js 文件,专门用于这些看起来很糟糕的字符串形式的查询..
let data_example = 'SELECT * \
WHERE BLAH = BLAH AND \
....';
它几乎没有人类可读性,而且看起来很糟糕。 store/organize 或处理需要在 Node 中存储和调用的长 SQL 查询字符串的最佳方法是什么?
你有几个选择。
您可以将它们存储在您在程序启动时读取的文件中,这样您就可以在理解 SQL 的工具中编写它们,也许甚至可以连接到您的数据库以自动-帮你完成,可以帮你排版,语法高亮等等
可以使用ES2015("ES6")template strings(也叫"template literals"):
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 注入向量。
这两个选项可能都有用例。
我编写了一个对 SQL 数据库进行外部调用的微服务。我有一个 js 文件,专门用于这些看起来很糟糕的字符串形式的查询..
let data_example = 'SELECT * \
WHERE BLAH = BLAH AND \
....';
它几乎没有人类可读性,而且看起来很糟糕。 store/organize 或处理需要在 Node 中存储和调用的长 SQL 查询字符串的最佳方法是什么?
你有几个选择。
您可以将它们存储在您在程序启动时读取的文件中,这样您就可以在理解 SQL 的工具中编写它们,也许甚至可以连接到您的数据库以自动-帮你完成,可以帮你排版,语法高亮等等
可以使用ES2015("ES6")template strings(也叫"template literals"):
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 注入向量。
这两个选项可能都有用例。