Reactjs Axios>;Express.router–;更新(.put)方法返回404
我正在尝试构建我的应用程序的最后一个CRUD方法。(C、R和D)全部完成。但事实证明,更新似乎很麻烦。我有一个函数,它将对象ID与要更新的新内容相结合。我收到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解
错误:请求失败,状态代码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, {