如何使用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,怎么做?
答案 0 :(得分:0)
您可以使用数组数组批量插入多行,因此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 })
}
})
答案 1 :(得分:0)
我解决了使用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"
}
]
}