FormData все конвертирует в строковые четные массивы

      const formData = new FormData()
formData.append('choices', [1, 2, 3])

варианты, преобразованные в

      '1,2,3'

И это отправляется на узел js, который не проходит проверку zod , потому что ожидает массив. то же самое происходит и с числами.

почтовый запрос axios

      axios.post('product', formData, {
      headers: {
        'Content-Type': 'multipart/form-data',
      },
    })

2 ответа

Значение для formData будет преобразовано в строку.

См. документацию: https://developer.mozilla.org/en-US/docs/Web/API/FormData/append .

Значение поля. Это может быть USVString или Blob (включая подклассы, такие как File). Если ни один из них не указан, значение преобразуется в строку.

Вы можете преобразовать его обратно на стороне сервера с помощью:

      const choicesArray = choices.split(',').map(Number);
       const numArray = [1, 2, 3, 4, 5];
    const formData = new FormData();
    formData.append("data", JSON.stringify(numArray));

Отправить запрос

       await axios.post(url, formData, {
      headers: {
        "Content-Type": "multipart/form-data",
        Accept: "application/json",
      },
    });
Другие вопросы по тегам