Reactjs Axios>;Express.router–;更新(.put)方法返回404

Reactjs Axios>;Express.router–;更新(.put)方法返回404,reactjs,express,mongoose,axios,Reactjs,Express,Mongoose,Axios,我正在尝试构建我的应用程序的最后一个CRUD方法。(C、R和D)全部完成。但事实证明,更新似乎很麻烦。我有一个函数,它将对象ID与要更新的新内容相结合。我收到错误:请求失败,状态代码404打印到控制台 我想我无法使用ID访问数据库项 收集数据并启动请求的函数 api.js-使用axios触发请求(这可能是我失败的地方)。 Snippet.js(模式) “routes/snippets.js”中的相关路线-这也可能是我摔倒的地方 您正在url中发送id,因此需要从req.params.id解

我正在尝试构建我的应用程序的最后一个CRUD方法。(C、R和D)全部完成。但事实证明,更新似乎很麻烦。我有一个函数,它将对象ID与要更新的新内容相结合。我收到
错误:请求失败,状态代码404

打印到控制台

我想我无法使用ID访问数据库项

收集数据并启动请求的函数

api.js-使用axios触发请求(这可能是我失败的地方)。

Snippet.js(模式)

“routes/snippets.js”中的相关路线-这也可能是我摔倒的地方
您正在url中发送id,因此需要从req.params.id解析它。 我也回答了

routes/snippets.js

router.put("/:id", function(req, res) {
  console.log(req.body);
  Snippet.findByIdAndUpdate(
    req.params.id,
    {
      name: req.body.name,
      details: req.body.details,
      content: req.body.content
    },
    { new: true },
    function(err, response) {
      if (err) {
        console.log("we hit an error" + err);
        return res.json({
          message: "Database Update Failure"
        });
      }
      return res.send(response);
    }
  );
});
您还需要在api.js中更新这一行。只需在代码片段后添加/删除

   .put('/snippets' + data.id, {     => 
   .put('/snippets/' + data.id, { 

console.log(req.body)它记录了什么?@ibtsam nothing,它不会触发。您的路由必须以:router.put(“/:id“…请检查我的答案。我确定您当时就有了它。我添加了
“/:id”
但是我仍然收到
错误:请求失败,状态代码为404
您的请求符合此路线吗?@Neil我发现了另一个问题并更新了答案,您能检查一下吗?嘿,我收到
的消息http://localhost:5000/api/snippets/5d9a6f611c9d440000d9205a net::ERR\u EMPTY\u响应
returned@Neil那么我们走上了路线?这是什么意思鞋底日志(要求主体)?
const mongoose = require('mongoose')

const snippetSchema = new mongoose.Schema({
  name: {
    type: String,
    required: [true, 'The snippet name is required'],
    minlength: 1,
  },
  details: {
    type: [String],
    default: [],
  },
  content: {
    type: String,
  },
})

const Snippet = mongoose.model('Snippet', snippetSchema)

module.exports = Snippet
router.put('/', function(req, res) {
  console.log(req.body)
  Snippet.findByIdAndUpdate(
    req.body.id,
    {
      name: req.body.name,
      details: req.body.details,
      content: req.body.content,
    },
    { new: true },
    function(err, response) {
      if (err) {
        console.log('we hit an error' + err)
        res.json({
          message: 'Database Update Failure',
        })
      }
      console.log('This is the Response: ' + response)
    }
  )
})
router.put("/:id", function(req, res) {
  console.log(req.body);
  Snippet.findByIdAndUpdate(
    req.params.id,
    {
      name: req.body.name,
      details: req.body.details,
      content: req.body.content
    },
    { new: true },
    function(err, response) {
      if (err) {
        console.log("we hit an error" + err);
        return res.json({
          message: "Database Update Failure"
        });
      }
      return res.send(response);
    }
  );
});
   .put('/snippets' + data.id, {     => 
   .put('/snippets/' + data.id, {