Как сделать много запросов ax ios, используя ax ios .all с сервера узла express - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь вызвать мой localhost api из скрипта узла, чтобы сделать сто запросов к printful api , каждый из которых занимает пару секунд. Это моя конечная точка

app.post("/api/addUpdateVariants", (req, res) => {
  req.setTimeout(1000000);
  Promise.all(req.body.map(variant => {
    const {id, ...body} = variant;
    return new Promise((resolve, reject) =>
      axios.post(`https://api.printful.com/store/products/${req.body[0].id}/variants`,
        body,
        {
          headers: {
            'Authorization': 'Basic ' + process.env.API_KEY_64
          }
        }
      ).then(response => {
          resolve(response.data.result.id)
      }).catch(err => {
          reject(err);
      })
    );
  })).then(promiseRes => {return res.status(200).send({msg:"variants added", promiseRes})})
  .catch(err => res.status(500));
});

, и это мои данные, переданные в req.body

[{"files":[{"id":151812076}],"variant_id":4021,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":4022,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":4023,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":4024,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":4025,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":5296,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":5311,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":8440,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":8441,"retail_price":"25.00","id":"@1"},
... many more

запрос успешно выполняется, если я вызываю конечную точку только с несколькими строками, но я ищу для способа автоматизировать это без меня, комментировать / раскомментировать большую часть тела снова и снова. На данный момент только 23 строки данных успешно используются при вызове printful api до того, как сервер express зависнет (больше не будет успешно добавлено). У кого-нибудь есть представление о том, что я делаю не так? Я попытался разделить запросы, как это, вызывая его с помощью фрагментированного массива, но это также тайм-аут / сокет закрыт.

const addVariants = (arrays) => {
  const [head, ...tail] = arrays;
    const variantsBody = head.map(id => (
      {
        "files": [
          {"id": 151812076}
        ],
        "variant_id": id,
        "retail_price": "25.00",
        id: "@1"
      }
    ));

    axios.post("http://localhost:8000/api/addUpdateVariants",
      variantsBody
    )
  .then(response => {
    if(tail.length > 0) addVariants(tail);
  }).catch(err => console.log(err));
}
...