我正在使用池在nodejs上查询mySQL。我们正在这样做,并且运行良好。
let values = [1, 2, 3];
DB.pool.query('SELECT * ROM table_name WHERE col1 = ? AND col2 = ? AND col3 = ?' , values, ( err, rows ) => {
//Do something
});
正如您所注意到的,where 值位于数组中,我们在查询字符串上使用 ?
来插入这些值。问题是,在复杂的查询上,有很多值(value)。
有没有办法使用对象来代替?
类似于:
let values = {col1: 1, col1: 2, col1: 3};
查询字符串如下:
SELECT * ROM table_name WHERE col1 = :col1 AND col2 = :col2 AND col3 = :col3
如有任何帮助,我们将不胜感激。
最佳答案
您可能正在寻找类似 knex 的查询生成器或slonik .
您可以编写自己的实用函数来帮助将字符串插入查询中,也许可以使用 JS Template Literals ,但是已经存在像上面这样的包来帮助您做到这一点。
最终,答案是“并非如此”。 SQL 查询本质上是一个字符串。要么您将使用为您构建查询的客户端/库(这就是您已经使用的任何客户端正在做的事情,让您传入一个值数组以插入到字符串中),要么您是以某种方式自己手动创建字符串。
关于javascript - 使用 JS 对象作为 mySQL 查询字符串的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60500917/