我有以下格式的json请求:
{
"claimNo":["5454545","4554454","45884"]
}
claimNo可以容纳任意数量的项目(不受限制)。我想获取值并编写查询以从mysql db获取数据,其中ClaimNo =请求中的值。 样本响应:
"claims": [
{
"claimNo": "4554454",
"ClaimCause": "gjgiukhknl",
"ClaimAmount": 45550,
},
{
"claimNo": "5454545",
"ClaimCause": "fdfdfdfdf",
"ClaimAmount": 0,
}
]
我可以成功遍历请求并在终端上显示,甚至可以通过多个OR插入数据库,但这仅适用于有限的数组长度。
req.body.claimNo.forEach(element => {
// console.log(element)
let sql = 'SELECT * FROM claims WHERE claimNo = ?'
connection.query(sql,element,(err, rows, fields) => {
if(!err){
// return res.json({
// success:true,
// errorCode:"",
// errorDescription:"",
// claims:rows
// })
console.log(rows)
}else
console.log(err)
} )
})
答案 0 :(得分:1)
如果我很好地理解了您的问题,那么您正在寻找一种查询MySQL数据库以获取多个claimNo
条目并将结果作为单个结果返回的方法。
使用MySQL IN()运算符,您可以将查询写为select * from claims where claimNo in(?)
let sql = 'select * from claims where claimNo in(?)';
let claimNos = req.body.claimNo;
connection.query(sql, claimNos, (err, rows, fields) => {
if(!err){
// return res.json({
// success:true,
// errorCode:"",
// errorDescription:"",
// claims:rows
// })
console.log(rows)
}else
console.log(err)
})
答案 1 :(得分:0)
您不需要为每个claimNo
发送单独的请求。您可以改为IN
运算符。以下应该起作用:
const claimsNo = claims.map(claim => claim.claimNo);
const sql = 'SELECT & FROM claims where claimNo IN (?)';
connection.query(sql, [ tableName, claimsNo ], (err, rows, fields) =>{
...
});