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);
});
Другие вопросы по тегам