Sails ORM:如何在 valuesToEscape 参数中使用数组传递值

Sails ORM: How to pass value with array in valuesToEscape parameter

我有 rawQuery,它需要逗号分隔的字符串,但根据文档 here,第二个参数应该是一个数组:

An array of dynamic, untrusted strings to SQL-escape and inject within the SQL string using the appropriate template syntax for this model's database. (If you have no dynamic values to inject, then just use an empty array here.)

var rawQuery = 'SELECT * FROM "user" WHERE "user"."email" IN ()';
User.query(rawQuery, ['a@a.com', 'b@b.com'], function (err, rawResult) {
  if (err) { return res.serverError(err); }
    return res.ok(rawResult.rows);
});

如何在不通过数组传递变量的情况下使这个查询工作?我可以像这样直接添加变量

var rawQuery = 'SELECT * FROM "user" WHERE "user"."email" IN (' + foo +')';

但是容易受到SQL注入攻击

到运行不使用参数注入方式直接查询,需要去掉SQL命令特殊字符,否则会被p运行e注入攻击,如你说。

有些软件包可以为您做到这一点: 最受欢迎的是 npm: sql-escape and npm sqlstring

他们会将转义字符添加到您的字符串中的任何特殊字符:

var escape = require('sql-escape');

var result = escape('my sweet "string"'); 
//result: 'my sweet \"string\"'