【问题标题】:how to insert multiple object with nodejs and mysql?如何使用 nodejs 和 mysql 插入多个对象?
【发布时间】:2018-06-05 12:21:29
【问题描述】:

如何用nodejs和mysql插入多个对象?

我有这样的数据 json:

[
   {
      "id":"317",
      "stock":"200",
      "status":"y"
   },
   {
      "id":"1224",
      "stock":"400",
      "status":"y"
   }
]

这是我的代码:

function create(req, res) {
  pool.getConnection((err, connection) => {
    if (err) return res.send(err)
    let { id, stock, status } = req.body
    let values = [{
      id: id,
      stock: stock,
      status: status
    }]
    let sql = 'INSERT INTO tbl_stock SET ?'
    connection.query(sql, values, (err, results) => {
      if (err) {
        return res.send(err)
      } else {
        connection.release()
        return res.status(HttpStatus.OK).json({ message: 'ok', status: HttpStatus.OK })
      }
    })
  })
}

如果data json有一个对象,此代码有效,但我想插入多个json格式的对象,如上面的data json,该怎么做?

【问题讨论】:

    标签: mysql node.js express


    【解决方案1】:

    您可以使用数组数组批量插入多行,所以values 应该看起来像这样,

    let values = [[317, 200, 'y'], [1224, 400, 'y']];
    

    查询看起来像这样,

    let sql = 'INSERT INTO tbl_stock(id, stock, status) VALUES ?';
    

    然后使用连接运行查询,

    connection.query(sql, values, (err, results) => {
          if (err) {
            return res.send(err)
          } else {
            connection.release()
            return res.status(HttpStatus.OK).json({ message: 'ok', status: HttpStatus.OK })
          }
        })
    

    【讨论】:

    • 值需要在一个数组中:connection.query(sql, [values],...)
    【解决方案2】:

    我使用 map 和 promise 解决了

    function create(req, res) {
      pool.getConnection((err, connection) => {
        if (err) return res.send(err)
        let promises = []
        req.body.values.map((n) => {
          promises.push(new Promise(resolve => {
            let { id, stock, status } = n
            let values = {
              id: id,
              stock: stock,
              status: 'y',
            }
            let sql = 'INSERT INTO tbl_stock SET ?'
            connection.query(sql, values, (err, results) => {
              if (err) {
                return res.send(err)
              } else {
                return res.status(HttpStatus.OK).json({ message: 'ok', status: HttpStatus.OK })
              }
            })
          }))
    
          Promise.all(promises).then(result => {
            connection.release
          })
        })
      })
    }
    

    这样的数据json:

    {
       "values":[
          {
             "id":"317",
             "stock":"200",
             "status":"y"
          },
          {
             "id":"1224",
             "stock":"400",
             "status":"y"
          }
       ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-18
      • 2020-08-31
      • 2020-09-02
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 1970-01-01
      相关资源
      最近更新 更多