node.js - 使用选项参数转义具有重叠列名称的联接的查询

标签 node.js node-mysql

npm 上的 node-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() 中的第二个参数传递,如下所示:

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, 1, function(err, results) {
        ...
    });

但是没有效果。我想知道是否有办法做到这一点?

最佳答案

如果您阅读代码,第 66 行有一个 IF block

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) {
  ...
});

关于node.js - 使用选项参数转义具有重叠列名称的联接的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13904204/

相关文章:

javascript - 我应该如何使用node.js 和导出来调用mysql 数据库?

mysql - 错误 : Handshake inactivity timeout in Node. js MYSQL 模块

mysql - node-mysql:多语句查询,ER_PARSE_ERROR

javascript - 在node.js中的模块之间传递mysql连接

javascript - 将 localtunnel\ngrok 与多个本地站点一起使用

javascript - 重新呈现网页

mysql - Nodejs 与 Mysql 数据库返回值

javascript - 如何快速判断两个文件夹(包括里面的内容)是否不同?

javascript - nodemon 内部监视失败 : watch/Users/admin/Library/Application Support/Code/1. 26.1-shared.sock 未知系统错误 -102

javascript - Node Sequelize 回调 promise 期望一个函数,是否有通过函数调用删除声明函数的方法