在Node JS Express中解析req.body中的数组

时间:2018-07-26 06:43:35

标签: javascript node.js express swagger hyperledger

我在请求正文中得到一个数组,如:

[

{
   "month" : "JUL",
   "year" :"2018"
},
{
   "month" : "JAN",
   "year" :"2018"
},
{
   "month" : "MAR",
   "year" :"2018"
}
    ]

此输入有两个参数(month:enum和year:string)。

我需要遍历此数组并调用链码,最后发送响应。我已完成以下操作:

     for(var i=0; i<req.body.length; i++) {
                    var month = req.body[i].month;
                    var year = req.body[i].year;
                    var monthYear = month + year;
    key = monthYear + "_new";
        console.log("Key is ", key);
            var request = {
            //targets: let default to the peer assigned to the client
            chaincodeId: 'abc',
            fcn: 'getTransactionsByKey',
            args: [key]

//Calling chaincode smartcontract
return channel.queryByChaincode(request);
}

,但如果我仅传递一个输入参数,则响应正确。如果我在输入中传递两个值,则第二个值结果将覆盖第一个值。关于如何获得重叠部分的所有输入列表的响应的任何帮助。

此外,我需要在调用链码之前对输入值进行排序,例如,如果输入中输入Feb Mar Jan,则应将其排序为Jan Feb Mar,然后运行for循环。

对此有任何帮助。

先谢谢了。 谢谢。

2 个答案:

答案 0 :(得分:0)

您要从密钥中获取值吗?

for (var key in req.body) {
  if (req.body.hasOwnProperty(key)) {
    let value = req.body[key];
    console.log( `value for ${key} is ${value}` )
  }
}

答案 1 :(得分:0)

您可以在app.js中使用主体解析器,如下所示: app.use(bodyParser.urlencoded({extended:true}));

假设您正在使用以下关键字在发帖请求正文中接收数组:用户,您将像这样解析它:req.body.users(其中包含users数组)