【发布时间】:2016-02-24 04:49:31
【问题描述】:
我有几个关于使用 Express 设置 React 的问题。
首先,我对 Express 和 React-Router 使用了相同的路由路径。我认为这些应该匹配。但是当我导航到一个页面 api/blogPosts 时,它只显示了我从 MongoDB 获取的 JSON 格式的数据。也就是说,Express 路由覆盖了 React 视图。我知道我可以只修改 React-Router 中的路由路径(例如,前面没有'api'),以便有不同的路由。然后它将按预期显示 React 视图,同时仍然进行 api 调用。但同样,我认为路线路径应该匹配。我该如何正确处理?
其次,我使用了 express.Router(),但我不确定这是否必要。什么时候应该使用 express.Router(),什么时候应该只使用 app.get、app.post 等。
第三,当人们讨论客户端路由时,他们是在讨论 React Router 之类的东西吗?当人们讨论服务器端路由时,他们只是指像 apiRouter 调用那样对数据库进行 api 调用吗?
routes.js
<Route component={App}>
<Route path='/' component={Home} />
<Route path='/api/blogPosts/create' component={Create} />
<Route path='/api/blogPosts/:blogPostId' component={BlogPost} />
</Route>
server.js
var apiRouter = express.Router();
apiRouter.route('/blogPosts')
.post(function(req, res) {
var blogPost = new BlogPost();
blogPost.postbody = req.body.postbody;
blogPost.save(function(err) {
if (err) {
return res.send(err);
}
res.json({ message: blogPost.postbody + "created"})
});
})
.get(function(req, res) {
BlogPost.find(function(err, posts) {
if (err) return res.send(err);
res.json(posts);
});
});
apiRouter.route('/blogPosts/:blogPostId')
.get(function(req, res) {
BlogPost.findById(req.params.blogPostId, function(err, blogPost) {
if (err) return res.send(err);
res.json(blogPost);
})
});
app.use('/api', apiRouter);
【问题讨论】:
标签: node.js mongodb express reactjs react-router