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

Import sql file with template literal variables and execute with knex raw

我有一个大型 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

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

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