导入带有模板文字变量的sql文件并使用knex raw执行

时间:2019-09-07 16:42:04

标签: sql node.js postgresql knex.js

我有一个大型的sql查询,我想移至.sql文件,然后使用knex.raw()导入并执行。

所以我有类似的东西:

knex().raw(`
  SELECT *
  FROM user_profiles
  WHERE user_id = '${userId}';
`);

我尝试将查询移到文件中并使用

进行读取

let sql = fs.readFileSync('./queries/user-profile.sql').toString();

但是当然不会评估模板文字变量${userId}

我考虑过正则表达式,只是手动进行了替换,但是我希望会有更好的方法。最好是一种解决方案,用于解决通过此操作创建的sql注入漏洞。

感谢<3

1 个答案:

答案 0 :(得分:0)

我能够使用原始绑定:http://knexjs.org/#Raw-Bindings

knex().raw(`
  SELECT *
  FROM user_profiles
  WHERE user_id = :userId;
`, {userId: 1});