Nodejs 和 mysql,一个查询中的多个条件

Nodejs and mysql, multiple criteria in a query

本文关键字:查询 条件 一个 mysql Nodejs      更新时间:2023-09-26

我实际上正在使用mysql模块来查询我的数据库,但我遇到了一个问题。事实上,我需要转义一个完整的对象,并在mysql可以理解的查询中解析它。

实际上,我有:

getByCriteria: (collectionName, criteria)->
    sql = 'SELECT * FROM ?? WHERE ?'
    inserts = [collectionName, criteria]
    sql = MySql.format(sql, inserts)
    deferred = Q.defer()
    MysqlAdapter.CONNECTION.query(sql, (err, rows, fields)->
      console.log err
      if err
        deferred.reject(new Error(err))
      else
        deferred.resolve(rows)
    )
    return deferred.promise

但是控制台.log(sql)打印:

SELECT * FROM user WHERE username = 'admin', id=1

所以我猜测"Mysql.format"返回一个字符串用于插入/更新SQL操作。如何使用mysql执行此操作,而无需使用自制解决方案解析整个字符串?

感谢提前

恐怕MySql.format()非常简单(https://github.com/felixge/node-mysql/blob/master/lib/protocol/SqlString.js#L67),所以你需要自己格式化。

请记住使用MySql.escape()转义值,使用MySql.escapeId()转义标识符

您需要类似于SqlString.objectToValues() https://github.com/felixge/node-mysql/blob/master/lib/protocol/SqlString.js#L109 但值与AND而不是,