Ax ios отправить странный массив в React - PullRequest
0 голосов
/ 04 августа 2020

Я получаю данные обратно из своего API в React из почтового запроса, и я получаю только первый объект всего Array.prototype

Мой API для загрузки:

router.post("/uploads", upload.any(), async (req, res) => {
  try {
    if (!req.files) {
      res.send({
        status: false,
        message: "No file uploaded",
      });
    } else {
      let data = req.files;

      res.send({
        status: true,
        message: "Files are uploaded",
        data: data,
      });
    }
  } catch (error) {
    res.status(500).send(err);
  }
});

POSTMAN возвращает мне:

{
    "status": true,
    "message": "Files are uploaded",
    "data": [
        {
            "fieldname": "uploads\n",
            "originalname": "46335256.jpg",
            "encoding": "7bit",
            "mimetype": "image/jpeg",
            "destination": "client/uploads/",
            "filename": "46335256-2020-08-04.jpg",
            "path": "client/uploads/46335256-2020-08-04.jpg",
            "size": 19379
        },
        {
            "fieldname": "uploads\n",
            "originalname": "120360358.jpg",
            "encoding": "7bit",
            "mimetype": "image/jpeg",
            "destination": "client/uploads/",
            "filename": "120360358-2020-08-04.jpg",
            "path": "client/uploads/120360358-2020-08-04.jpg",
            "size": 78075
        }
    ]
}

отлично!

это моя функция в React для загрузки

const uploadFiles = () => {
    uploadModalRef.current.style.display = "block"
    uploadRef.current.innerHTML = "File(s) Uploading..."
    for (let i = 0; i < validFiles.length; i++) {
      const formData = new FormData()
      formData.append("images", validFiles[i])

      axios
        .post("http://localhost:5000/api/db/uploads", formData, {
          onUploadProgress: progressEvent => {
            const uploadPercentage = Math.floor(
              (progressEvent.loaded / progressEvent.total) * 100
            )
          ...// code for graphic upload 
          },
        })

        .then(resp => {
          console.log(resp.data.data)
          resp.data.data.map(item => {
            console.log(item)
          })
        })

      .catch(() => {
       ... // code
    }
}

и с этим я получаю (из консоли) :

[{…}]
0:
destination: "client/uploads/"
encoding: "7bit"
fieldname: "images"
filename: "46335256-2020-08-04.jpg"
mimetype: "image/jpeg"
originalname: "46335256.jpg"
path: "client/uploads/46335256-2020-08-04.jpg"
size: 19379
__proto__: Object
length: 1
__proto__: Array(0)

- это массив (если я сопоставлю, он работает), но только с первым объектом. Как это возможно ?? Пробовал даже с async / await, но ничего не изменилось

Где ошибаюсь?

Спасибо!

...