【发布时间】:2021-12-17 05:20:29
【问题描述】:
我正在尝试通过 Axios 将数据从使用 React 创建的页面传递到由 Express 服务器管理的 Mongo 数据库。保存到数据库适用于用户,但对于帖子我收到以下错误消息:
POST http://localhost:3001/createPost 404(未找到)
未捕获(承诺中)错误:请求失败,状态码为 404 在 createError (createError.js:16) 定居时 (settle.js:17) 在 XMLHttpRequest.onloadend (xhr.js:66)
谁能帮帮我?下面我附上代码。
App.jsx
function App(){
return (
<Router>
<Route path="/" exact>
<Home />
</Route>
<Route path="/new">
<NewPostFromHome />
</Route>
</Router>
);
}
index.js(服务器)
const app = express();
app.use(cors());
app.use(express.json());
//Database connection
mongoose.connect("mongodb://localhost:27017/codingWaifus", {useNewUrlParser: true}, function(err, db){
if(err){
console.log(err);
}
else{
console.log("Connected to "+mongoose.connection.name+" on Port: "+mongoose.connection.port);
}
});
mongoose.connection.on('error', console.error.bind(console, 'MongoDB connection error:'));
app.use("/", require("./routes/userRoute"));
app.use("/new", require("./routes/postRoute"));
app.listen(3001, () => {
console.log("running on port 3001");
});
postModel.js
const mongoose = require("mongoose");
const postsSchema = {
title: String,
body: String
}
const Post = mongoose.model("Post", postsSchema);
module.exports = Post;
postRoute.js
const express = require("express");
const router = express.Router();
const Post = require("../models/postModel");
router.route("/createPost").post((req, res) => {
const title=req.body.title;
const body=req.body.body;
const newPost = new Post({
title,
body
});
newPost.save();
})
module.exports = router;
【问题讨论】:
-
app.use("/new", require("./routes/postRoute"));注意postRoute路由器是如何添加到/new路径而不是/ -
对 Postman 的 POST 请求使用 URL
http: //localhost:3001/new/createPost -
如果我在 Axios.post 中使用“http://localhost:3001/new/createPost”作为目的地,它可以工作。你知道它为什么会这样吗?有什么方法可以使用 http://localhost:3001/createPost 作为路径使其工作?
标签: javascript reactjs mongodb express axios