【问题标题】:Cannot get axios.put working with backend无法让 axios.put 与后端一起工作
【发布时间】:2021-06-02 09:44:09
【问题描述】:

您好,我有问题。我正在使用 (mongo atlas,reactjs,nodejs,express) 编写一个 crud rest api,并且想要执行一些更新数据,但是在使用 axios.put 时它不起作用。 另外,当我在后端(router.patch ..)使用邮递员时,它的工作原理是我无法让 axios.put 在前端工作。这是前端的 axios.put 语法:

handleUpdate = async(e) => {
    try{
       const res = await axios.put('http://127.0.0.1:3000/posts/'+e,{
           ville: this.state.ville
       })
       alert(res.data)
       console.log(res.data)
    }catch(err){
          console.log(err)
    }
}

这是 router.patch 代码的后端部分: //更新一个帖子{ville}

router.patch('/:PostId', async (req,res) => {
    try{
        const updatedPost = await Post.updateOne({_id : req.params.PostId}, 
            { $set: {ville: req.query.ville}
        });
        res.json(updatedPost);
    }catch(err){
        res.json({message: err});
    }
});

你能帮忙吗??

【问题讨论】:

  • 后端使用patch,前端使用put

标签: node.js reactjs express axios


【解决方案1】:

您好,感谢 Cyber​​Eternal 的帮助和支持,我找到了问题并解决了问题。 在将后端和前端都更改为放置后,我已经在后端发布了我需要编写 $set: {ville: req.body.ville} 而不是 $set: {ville: req.query.ville} 这里是后端的新代码: //更新一个帖子{ville}

router.put('/:PostId', async (req,res) => {
    try{
        const updatedPost = await Post.updateOne({_id : req.params.PostId}, 
            { $set: {ville: req.body.ville}
        });
        res.json(updatedPost);
    }catch(err){
        res.json({message: err});
    }
});

这是前端的代码(我还添加了一个提示,以便用户可以输入字符串格式的 id 并将 id 添加到 url):

handleUpdate = async(e) => {
    try{
        var person = prompt("Veuillez saisir l'Id de l'employé");
       const res = await axios.put('http://127.0.0.1:3000/posts/'+person,{
           ville: this.state.ville
       })
       alert(res.data)
       console.log(res.data)
    }catch(err){
          console.log(err)
    }
}

它有效!谢谢!

【讨论】:

    【解决方案2】:

    你需要在后端使用 PUT 方法而不是 PATCH

    router.put('/:PostId', async (req,res) => {
        try{
            const updatedPost = await Post.updateOne({_id : req.params.PostId}, 
                { $set: {ville: req.query.ville}
            });
            res.json(updatedPost);
        }catch(err){
            res.json({message: err});
        }
    });
    

    或者,在前端使用 PATCH 方法

    const res = await axios.patch('http://127.0.0.1:3000/posts/'+e,{
               ville: this.state.ville
           })
    

    【讨论】:

    • 嗨,我在前端和后端都试过了(put,patch),但它没有更新,也许我的提交表单有误?这是我的代码:




    • 我认为您不需要使用 type="submit" 的输​​入。尝试为此使用按钮标签
    • 请查找更多关于差异的信息stackoverflow.com/questions/7117639/…
    • 您好,我尝试使用按钮,但它似乎不起作用, 还是在handleChange 本身中?
    猜你喜欢
    • 2017-06-08
    • 2017-03-14
    • 2020-02-29
    • 2011-04-25
    • 2014-11-22
    • 2014-05-15
    • 2010-10-16
    • 2019-11-27
    • 2017-02-12
    相关资源
    最近更新 更多