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

时间:2015-01-13 09:17:51

标签: javascript mysql node.js coffeescript

我实际上使用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

但是console.log(sql)打印:

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

所以我猜到了" Mysql.format"返回INSERT / UPDATE SQL操作的字符串。 如何使用mysql完成它,而无需使用自制解决方案解析整个字符串?

提前谢谢

1 个答案:

答案 0 :(得分:1)

我担心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而不是,

相关联