Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用Options参数转义具有重叠列名的联接的查询_Node.js_Node Mysql_Mysql Escape String - Fatal编程技术网

Node.js 使用Options参数转义具有重叠列名的联接的查询

Node.js 使用Options参数转义具有重叠列名的联接的查询,node.js,node-mysql,mysql-escape-string,Node.js,Node Mysql,Mysql Escape String,npm上节点mysql的文档https://npmjs.org/package/mysql 在表联接中有一个重叠列名的选项,如下所示: var options = {sql: '...', nestTables: true}; connection.query(options, function(err, results) { /* results will be an array like this now: [{ table1: { fieldA: '...',

npm上节点mysql的文档https://npmjs.org/package/mysql 在表联接中有一个重叠列名的选项,如下所示:

var options = {sql: '...', nestTables: true};
connection.query(options, function(err, results) {
  /* results will be an array like this now:
  [{
    table1: {
      fieldA: '...',
      fieldB: '...',
    },
    table2: {
      fieldA: '...',
      fieldB: '...',
    },
  }, ...]
  */
});
转义查询标识符格式将第二个参数传递给connection.query,该参数将清除标识符:

connection.query('SELECT * FROM users WHERE id = ?', [userId], function(err, results) {
  // ...
});
我想知道你怎么能同时使用这两个?假设您需要在联接中转义标识符,但要声明嵌套表的选项:

var sqlString: 'SELECT * FROM TableOne INNER JOIN TableTwo ON TableOne.id = TableTwo.tableone_id WHERE TableOne.id = ?';
var options = {sql: sqlString, nestTables: true};
connection.query(options, function(err, results) {
    ...
});
我尝试将转义值作为connection.query中的第二个参数传递,如下所示:


但是没有用。我想知道是否还有其他方法可以做到这一点?

如果您阅读代码,第66行有一个if块

if (typeof sql === 'object') {
  options = sql;
  cb      = values;
  values  = options.values;
}
意思是你会这么做

var sqlString: 'SELECT * FROM TableOne INNER JOIN TableTwo ON TableOne.id = TableTwo.tableone_id WHERE TableOne.id = ?';
var options = {sql: sqlString, nestTables: true, values: [1]};
connection.query(options, function(err, results) {
  ...
});

我知道这是陈腐的,但我在寻找快速答案时遇到了它,然后决定发布我的解决方案。
var sqlString: 'SELECT * FROM TableOne INNER JOIN TableTwo ON TableOne.id = TableTwo.tableone_id WHERE TableOne.id = ?';
var options = {sql: sqlString, nestTables: true, values: [1]};
connection.query(options, function(err, results) {
  ...
});