0

我正在现有应用程序中进行如下查询,并希望获得一些建议/示例,了解如何使用生成器为 KOA + co-mysql 重构它,避免或简化带有 sql 调用的链式函数。js也可以,当然我用的是nodejs 0.11和支持生成器的cs版本。仍在尝试掌握“新方式”。

谢谢,克

client = mysql.createPool(mysql_options)
getSql = (sql, callback) ->
  client.query sql, (err, rows, fields) ->
    if err  #mysql error handling
      if err.code isnt 'PROTOCOL_CONNECTION_LOST'
        console.log 'Mysql Error <> Conn.Lost: ',err.stack
        process.on "uncaughtException", (err) ->
          console.log "getSql Mysql Error Caught Exception: ", err.stack
          return
      else
        setTimeout ->
          console.log 'Connection Lost; Re-connecting lost client (restart delay): ',err.stack
          client = mysql.createPool(mysql_options)
          return
        , 700
    client.release
    callback rows

    q10 = ->         # and in the routes...
      sql = "select count(*) as custCount from cust01 where sessionid = '" +  prSid + "' and custNum = " + "'" + sessionLoginUser + "'"
      getSql sql, (results) ->
        q20(results[0].custCount)

    q20 = (custCount) ->
     ....etc etc

    q10()
4

1 回答 1

0

使用 co-mysql,他们的示例脚本将在 CoffeeScript 中(使用 xixixao fork):

co = require('co')
mysql = require('co-mysql')

co( -->
  connection = mysql.createConnection options
  connection.connect()
  result = yield connection.query('SELECT 10086 + 10000 AS q')
  connection.end()
)()
于 2014-05-05T15:50:54.797 回答