有些代码在nodejs中困扰我

时间:2018-05-21 04:56:38

标签: mysql node.js

我正在研究node.js,我看到一些像这样的代码

const mysql = require('mysql')
const config = require('./defaults')

var pool  = mysql.createPool({
  host     : config.database.HOST,
  user     : config.database.USERNAME,
  password : config.database.PASSWORD,
  database : config.database.DATABASE,
  port      : config.database.PORT
});

let query = function( sql, values ) {
  return new Promise(( resolve, reject ) => {
    pool.getConnection(function(err, connection) {
        if (err) {
            resolve( err )
        } else {
            connection.query(sql, values, ( err, rows) => {
                if ( err ) {
                    reject( err )
                } else {
                    resolve( rows )
                }
                connection.release()
            })
        }
      })
    })
}

let postdetail = function (id) {
  let _sql = `
      SELECT * FROM posts where postid = ${id}
  `
  return query(_sql)
}

module.exports={
  postdetail
}

让我感到困惑的是,query是一个函数,它有两个参数,一个是sql,另一个是values,但在postdetail中,{return 1}}只有一个参数,有人能解释一下吗?非常感谢。

1 个答案:

答案 0 :(得分:0)

query是mysql查询函数的包装函数。它需要查询和值。它可用于执行mysql的SelectInsertUpdate查询。

因此,在select的情况下,您只需要传递mysql query,不需要发送值,而query包装器方法values内部将undefined

对于InsertUpdated这样的情况,您可以将数据值与查询一起发送。