Мне нужно сделать PATCH на сервер, который ожидает очень специфический формат тела.Примерно так:
{
file: MY_FILE_OBJECT
name: 'Name',
nestedObject: {
nestednestedObject1: {
name: 'Some other name'
},
nestednestedObject2: {
name: 'Yet another name'
},
}
}
Поскольку мне нужно передать файл, я должен превратить его в объект FormData
.Итак, для основных полей легко и просто сформировать тело запроса
const data = new FormData()
data.append('file', file, file.name)
data.append('name', 'Name')
Однако как я могу сделать вложенный объект translation
?Я видел в другой ветке предложение, чтобы я делал каплю.Что должно быть примерно так:
const fullPatchObject = {
nestedObject: {
nestednestedObject1: { name: 'Some other name' }
nestednestedObject2: { name: 'Yet another name' }
}
}
const blob = new Blob([JSON.stringify(fullPatchObject)], { type: 'application/json' })
data.append('nestedObject', blob)
Это, однако, не работает.Я использую multer на сервере для обработки файла и получаю следующий объект ошибки:
name: 'MulterError',
message: 'Unexpected field',
code: 'LIMIT_UNEXPECTED_FILE',
field: 'nestedObject'
Имейте в виду, что если я не использую вложенный объект, он все работает как ожидалось, для обоихфайл и поля, которые я пытаюсь найти.Кажется, проблема в том, что Мултер считает, что мой nestedObject
, возможно, также является файлом?Дело в том ... Ну ... Это не так, я просто хочу, чтобы оно передавалось как поле типа name
.Я что-то пропустил?Как я могу отправить вложенный объект, используя FormData
?