ngx-uploader - передача объекта данных JSON в данные uploadInput, возвращая [объект объекта] - PullRequest
0 голосов
/ 17 февраля 2019

Я использую 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;
    };
    ...
}

Есть ли другой способ сделать это?

РЕДАКТИРОВАТЬ Хорошо, кажется, что люди не понимают, поэтому, возможно, я задал вопрос неправильно.

Примечание: это не проблема анализатора тела.

Проблема в том, что мои данные содержат объекты, поэтому данные отображаются как [объектный объект].

Моя конечная точка находится в исходном сообщениивыше.

Когда мои данные выглядят так, и я передаю их 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 через свойство datangx-uploader

Ответы [ 3 ]

0 голосов
/ 01 марта 2019

Вы можете использовать body-parser.

В вашем файле app.js

var bodyParser = require ('body-parser');

app.использовать (bodyParser.json ());

0 голосов
/ 01 марта 2019

Я понимаю вашу проблему, но при отправке ваших данных в поток он автоматически преобразует ваш объект в строку.Здесь, в этом случае, первая глубина может быть преобразована в строку, но когда она пытается преобразовать объект 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
0 голосов
/ 01 марта 2019

Можете ли вы попробовать этот код:

router.post('/path', upload.any(), (req, res, next) => {
    res.status(200).json(req.files);
});
...