为什么没有Node.js Express与MongoDB响应提取API调用(ReactJS和Redux)?

使用ReactJS,Redux,Webpack,Node.js和Express与MongoDB,我正在按照教程https://github.com/vasansr/mern-es6,并试图将其整合到我的项目。 首先,我正在尝试向我创build的服务器发出POST请求。 它会得到一个成功的响应,并且不会logging错误。 然而,在服务器的POST API内,它不loggingconsole.log('Req body', req.body); ,在terminal,我检查数据库是否已经用mongo -> show dbs创buildmongo -> show dbs数据库,但它是空的。

难道是有东西在拦截来自服务器的请求吗? 可能是什么问题?

这个…

 app.use('/', function (req, res) { res.sendFile(path.resolve('client/index.html')); }); 

来之前:

 app.post('/api/users/', function(req, res) { //... }); 

由于它是app.use POST /api/users仍然会击中该中间件,并且res.sendFile结束请求/响应。 您可能会看到您的post正在取回客户端HTML。

尝试将您的客户端HTML端点移动到中间件的末尾 ,并在error handling程序之前(如果有)。 这样,只有在没有任何API端点匹配的情况下才能使用。 或者,如果您只想GET /返回HTML,请更改useget

 app.use(webpackDevMiddleware(compiler, {noInfo: true, publicPath: config.output.publicPath})); app.use(webpackHotMiddleware(compiler)); app.use(express.static('dist')); //where bundle.js is app.use(bodyParser.json()); app.post('/api/users/', function(req, res) { console.log('Req body', req.body); var newUser = req.body; db.collection('users').insertOne(newUser, function(err, result) { if(err) console.log(err); var newId = result.insertedId; db.collection('users').find({_id: newId}).next(function(err, doc) { if(err) console.log(err); res.json(doc); }); }); }); app.get('/', function (req, res) { res.sendFile(path.resolve('client/index.html')); }); 
 app.post('/api/users/', function(req, res) { console.log('Req body', req.body); var newUser = req.body; db.collection('users').insertOne(newUser, function(err, result) { if(err) console.log(err); var newId = result.insertedId; db.collection('users').find({_id: newId}).next(function(err, doc) { if(err) console.log(err); res.json(doc); }); }); }); 

我有一个关于这个代码的小小的评论, if(err) console.log(err); 我想你应该改为if(err) return console.log(err);

对于error情况,我认为你需要return ,否则下面的部分将被执行,并会有一些错误报告。