Как вставить несколько объектов с помощью nodejs и MySQL? - PullRequest
0 голосов
/ 05 июня 2018

Как вставить несколько объектов с помощью 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 })
      }
    })
  })
}

этот код работает, если у данных json есть один объект, но я хочу вставить несколько объектов с форматом json, как данные json выше, как это сделать?

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Я решил, используя карту и обещание

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"
      }
   ]
}
0 голосов
/ 05 июня 2018

Можно массово вставить несколько строк, используя массив массивов, поэтому 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 })
      }
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...