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",
},
});