Извлечь запрос в node.js - PullRequest
0 голосов
/ 01 мая 2018

Учитывая этот URL /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);
}

но это не работает. Как я могу извлечь эти запросы правильно?

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Я только что понял это сам. Я действительно могу использовать это:

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] }

0 голосов
/ 01 мая 2018

Используя 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);

  ...
}

* Edit: Я только что проверил в 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],
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...