首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将JSON数据对象传递给uploadInput数据,返回[ Object ]

将JSON数据对象传递给uploadInput数据,返回[ Object ]
EN

Stack Overflow用户
提问于 2019-02-17 17:40:56
回答 3查看 561关注 0票数 1

我使用的是ngx,在uploadInput中的数据部分,我传递其他数据:

代码语言:javascript
复制
startUpload(): void {
    const event: UploadInput = {
      type: 'uploadAll',
      url: this.uploadUrl,
      method: 'post',
      data: this.data,
      headers: { 'Authorization': 'Token ' + this.userToken }
    };

    this.uploadInput.emit(event);
  }

问题是我传递的数据如下所示

代码语言:javascript
复制
this.data = {
    myData: {
       isThereData: true
    }
}

在我的表达式中读取res.body时,我的数据作为对象返回。

代码语言:javascript
复制
router.post('/path', upload.any(), (req, res, next) => {
    console.log(req.body) // logs [object, Object]
})

在将数据发送到表达式之前,我可以对数据进行紧张处理,但随后我需要将数据内容类型与来自ngx-uploader的数据一起传递,这一点我不知道如何做,甚至可能的话。

我知道我不能传递一个对象,因为UploadInput

代码语言:javascript
复制
export interface UploadInput {
    ...
    data?: {
        [key: string]: string | Blob;
    };
    ...
}

还有别的办法吗?

编辑好吧,似乎人们不理解,所以也许我问错了问题。

注:这不是身体解析器的问题。

问题是我的数据包含对象,所以数据以对象对象的形式出现。

我的端点在上面最初的文章中。

当我的数据看起来像这样,我把它给我的ngx上传者:

代码语言:javascript
复制
let data = {
    greeting: 'hi',
    color: 'green',
    car: 'toyota',
}

在我的表达式中,当我记录request.body时,数据是完美的。

但当我的数据看起来像这样:

代码语言:javascript
复制
let data = {
    greeting: {
        hello: 'hi',
        goodbye: 'bye'
    },
    car: {
        type: 'toyota,
        color: 'green'
    }
}

在我的表达式中,当我记录request.body时,我的数据以[Object object]的形式返回。

这就是问题所在。现在我可以压缩数据,但是当我通过ngx-uploader传递数据时,express不知道它是JSON,因为ngx-uploader需要传递它的内容类型。但是我传递的是带有一些数据的图像,当更改内容类型时,我会得到其他错误,并且图像停止工作。

因此,问题在于通过ngx-uploaderdata属性传递ngx-uploader中的数据。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-01 11:33:20

我理解您的关注,但在将数据发送到流时,它会自动将对象转换为字符串。在这里,在这种情况下,第一个深度可以转换为字符串,但当它试图将第二级对象转换为字符串时,它就变成了对象对象。为了使其升级,您需要首先对对象进行紧张化,然后发送它。

有关Cannot convert object to primitive value的更多信息

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2019-02-28 23:13:03

你能试试这段代码吗:

代码语言:javascript
复制
router.post('/path', upload.any(), (req, res, next) => {
    res.status(200).json(req.files);
});
票数 0
EN

Stack Overflow用户

发布于 2019-03-01 05:14:04

你可以使用身体解析器。

在app.js文件中

var bodyParser =需要量(‘body-解析器’);

app.use(bodyParser.json());

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54735870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档