繁体   English   中英

在node.js中提取查询

[英]Extract query in node.js

给定该网址/calculatePrice?id[0]=123&qty[0]=2&id[1]=456&qty[1]=3 我建立这个提取查询:

app.use('/calculatePrice', (req,res) => {
var query = {};
query.id = [];
query.qty = [];
    if(req.query.id[i]) query.id.push(req.query.id[i]);
    if(req.query.qty[i]) query.qty.push(req.query.qty[i]);
console.log(query);
}

但这不起作用。 我该如何提取这些查询呢?

使用Express.js,您可以直接在req.query访问查询参数。

app.use('/calculatePrice', (req,res) => {
  const params = req.query;
  const id = params.id || [];
  const qty = params.qty || [];

  console.log(id);
  console.log(qty);

  ...
}

ES6使用解构方式:

app.use('/calculatePrice', (req,res) => {
  const { id, qty } = req.query;

  console.log(id);
  console.log(qty);

  ...
}

*编辑:我刚刚检查了Express.js v.4,并且如果要设置参数在数组中的位置,则可以通过设置数组中的索引来传递数组元素:

/calculatePrice?id[1]=123&qty[1]=2&id[0]=456&qty[0]=3

req.query = {
  id: [456, 123],
  qty: [3, 1],
}

或者,如果您想按发送的相同顺序保存它们,如下所示:

/calculatePrice?id[]=123&qty[]=2&id[]=456&qty[]=3

req.query = {
  id: [123, 456],
  qty: [1, 3],
}

要么

/calculatePrice?id=123&qty=2&id=456&qty=3

req.query = {
  id: [123, 456],
  qty: [1, 3],
}

我自己已经弄清楚了。 我可以实际使用:

app.use('/calculatePrice', (req,res) => {
var query = {};
    if(req.query.id) query.id = req.query.id;
    if(req.query.qty) query.qty = req.query.qty;
console.log(query);
});

这将返回{ id: [123,456] , qty: [2,1] }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM