mysql - 一些代码在 nodejs 中让我困惑

标签 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,但是在postdetailreturn只有一个参数,有人可以解释一下吗?非常感谢。

最佳答案

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

因此在 select 的情况下,你只需要传递 mysql query,不需要发送值,并且在 query 包装器方法中 values 将是 undefined

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

关于mysql - 一些代码在 nodejs 中让我困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50442198/

相关文章:

php - 改进代码 xml-mysql 以进行大型插入(86k 条目)(PHP)

php - Android中通过php上传照片到Ubuntu服务器

javascript - 使用 sendgrid 发送电子邮件 [Node.js]

javascript - 私有(private) NPM : How can the latest version of a module be installed?

c# - 尝试保存到数据库时,列数与第 1 行的值数不匹配

php - 存储经常添加/删除的列

php - 在 MySQL 中是否有等效于 PHP 的 `date_default_timezone_set()` 的东西?

javascript - 当实际页面由 localhost 服务器提供时,如何使用 socket.io 与另一台服务器通信?

jquery - 如何在 PhantomJS 中使用 jQuery 循环表行

Node.js 应用程序适用于工头,但不适用于 heroku。 404错误