【问题标题】:Express not working with spread operator in JavaScriptExpress 不能在 JavaScript 中使用扩展运算符
【发布时间】:2020-10-22 07:10:00
【问题描述】:

我正在编写一个应用程序,您可以在其中通过 Axios 发送一个表单,然后它在 Express 控制的表单上发布。但是在我的 app.post() 中,我有一个 ...req.body,它没有显示在结果中。

  function exibirResultado(id, dados){
            const texto = JSON.stringify(dados)
            document.getElementById(id).innerHTML = texto
        }

 axios.post('formulario', {
            nome: 'João',
            sobrenome: 'Silva'
        }).then(resp => exibirResultado('post', resp))

这是我的客户端代码

app.post('/formulario', (req, res) => {
    res.send({
        ...req.body,
        id: 5
    })
})

在 HTML 中,有一个 id 为 post 的 div,但它上面只出现了表单 id 属性。

【问题讨论】:

  • 你遇到了什么错误?

标签: javascript html express axios


【解决方案1】:

您使用的是 express json 中间件吗?如果不是,express 可能在解析正文时遇到问题。尝试这样的事情:

const exp = require("express")
const _server = exp()
_server.use(exp.json())

【讨论】:

    【解决方案2】:

    Req.body 应该是一个对象,证明就是它的用法 - 你可以这样做:

    const newComment = new Comment({
            body: req.body.body,
            author: req.body.author
        });
    

    所以如果我没记错的话,你不能在上面使用扩展运算符,因为它不是数组。只需发送没有扩展运算符的 req.body:

    app.post('/formulario', (req, res) => {
        res.send({
            req.body,
            id: 5
        })
    })
    

    如果您需要将其作为数组发送,请将其包裹在一对括号中,如下所示:

    [req.body]
    

    如果要将其添加到现有数组中,则可以像这样使用扩展运算符:

    [...req.body]
    

    【讨论】:

    • 嘿伙计,谢谢你的帮助,它对我没有用,但我真的很感谢你试图帮助我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 2020-10-21
    • 2019-04-13
    • 2016-02-26
    相关资源
    最近更新 更多