ngx-uploader - передача объекта данных JSON в данные uploadInput, возвращая [объект объекта]
Я использую ngx-uploader и с разделом данных внутри uploadInput, я передаю дополнительные данные:
startUpload(): void {
const event: UploadInput = {
type: 'uploadAll',
url: this.uploadUrl,
method: 'post',
data: this.data,
headers: { 'Authorization': 'Token ' + this.userToken }
};
this.uploadInput.emit(event);
}
Проблема в том, что данные, которые я передаю, выглядят так
this.data = {
myData: {
isThereData: true
}
}
При чтении res.body
внутри моего экспресса мои данные возвращаются как [объект объекта].
router.post('/path', upload.any(), (req, res, next) => {
console.log(req.body) // logs [object, Object]
})
Я могу структурировать данные перед отправкой в экспресс, но затем мне нужно передать тип содержимого данных вместе с данными из ngx-uploader
, что я не уверен, как это сделать, или, если это вообще возможно.
Я знаю, что не могу передать объект из-за UploadInput
:
export interface UploadInput {
...
data?: {
[key: string]: string | Blob;
};
...
}
Есть ли другой способ пойти по этому поводу?
РЕДАКТИРОВАТЬ Хорошо, кажется, что люди не понимают, поэтому, возможно, я задал вопрос неправильно.
NB: Это не проблема парсера тела.
Проблема заключается в том, что мои данные содержат объекты, поэтому данные отображаются как [объект объекта].
Моя конечная точка в оригинальном посте выше.
Когда мои данные выглядят так, и я передаю их моему ngx-uploader:
let data = {
greeting: 'hi',
color: 'green',
car: 'toyota',
}
В моем экспрессе, когда я захожу request.body
Данные идеальны.
но когда мои данные выглядят так:
let data = {
greeting: {
hello: 'hi',
goodbye: 'bye'
},
car: {
type: 'toyota,
color: 'green'
}
}
В моем экспрессе, когда я захожу request.body
мои данные возвращаются как [Object object]
,
Это проблема. Теперь я могу систематизировать данные, но когда я потом передам их ngx-uploader
, express
не знает, что это JSON как ngx-uploader
нужен тип контента, передаваемый вместе с ним. Но я передаю изображение с некоторыми данными, и при изменении типа содержимого я получаю другие ошибки, и изображение перестает работать.
Таким образом, проблема заключается в передаче данных в ngx-uploader
через data
собственностью ngx-uploader
3 ответа
Я понимаю вашу озабоченность, но при отправке ваших данных в поток он автоматически преобразует ваш объект в строку. Здесь, в этом случае, первая глубина может быть преобразована в строку, но когда она пытается преобразовать объект 2-го уровня в строку, то получается [объект объекта]. Для того, чтобы обострить это, вы должны сначала зачеркнуть объект, а затем отправить его.
Для получения дополнительной информации относительно Cannot convert object to primitive value
:
console.log is for logging strings or simple values
as the docs say, you can format the output, as a json for example console.log("body: %j", req.body)
or, better yet, use console.dir to log the object as it is
Вы можете использовать body-parser.
В вашем файле app.js
var bodyParser = require ('body-parser');
app.use (bodyParser.json ());
Можете ли вы попробовать этот код:
router.post('/path', upload.any(), (req, res, next) => {
res.status(200).json(req.files);
});