是否有方法循环mysql(或语句)以获取express.js中的多行

是否有方法循环mysql(或语句)以获取express.js中的多行,mysql,node.js,api,express,Mysql,Node.js,Api,Express,我有一个json请求,格式如下: { "claimNo":["5454545","4554454","45884"] } 索赔单可以保存任意数量的物品(不受限制)。我想获取这些值并编写一个查询,从mysql数据库中获取数据,其中claimNo=请求中的值。 样本响应: "claims": [ { "claimNo": "4554454", "ClaimCause": "gjgiukhknl", "ClaimAmount": 45550,

我有一个json请求,格式如下:

{
"claimNo":["5454545","4554454","45884"]
}

索赔单可以保存任意数量的物品(不受限制)。我想获取这些值并编写一个查询,从mysql数据库中获取数据,其中claimNo=请求中的值。 样本响应:

 "claims": [
    {
        "claimNo": "4554454",
        "ClaimCause": "gjgiukhknl",
        "ClaimAmount": 45550,
    },
    {
        "claimNo": "5454545",
        "ClaimCause": "fdfdfdfdf",
        "ClaimAmount": 0,
    }
]
我可以成功地循环通过请求并在终端上显示,甚至可以使用多个or插入db,但这只适用于有限的数组长度

 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)


    } )
})

您不需要为每个
claimNo
发送单独的请求。您可以在操作符中选择
。以下方面应起作用:

const claimsNo = claims.map(claim => claim.claimNo);

const sql = 'SELECT & FROM claims where claimNo IN (?)';
connection.query(sql, [ tableName, claimsNo ], (err, rows, fields) =>{
   ...
});

如果我正确理解了您的问题,那么您正在寻找一种方法来查询MySQL数据库中的多个
claimNo
条目,并将结果作为单个结果返回

使用MySQL操作符,您可以将查询编写为
select*from claimNo in(?)

let sql='select*(从索赔中选择,(?);
设claimNos=req.body.claimNo;
查询(sql,claimNos,(err,rows,fields)=>{
如果(!err){
//返回res.json({
//成功:没错,
//错误代码:“”,
//错误描述:“”,
//索赔:行
// })
console.log(行)
}否则
console.log(错误)
})