繁体   English   中英

为什么带有MongoDB的Node.js Express不响应fetch API调用(ReactJS和Redux)?

[英]Why isn't Node.js Express with MongoDB responding to fetch API calls (ReactJS and Redux)?

使用ReactJS,Redux,Webpack,Node.js和Express与MongoDB,我遵循教程https://github.com/vasansr/mern-es6并尝试将其集成到我的项目中。 首先,我正在尝试向我创建的服务器发出POST请求。 并且它获得成功的响应并且没有记录错误。 但是在服务器POST API中,它没有记录console.log('Req body', req.body); ,并在终端我检查是否已使用mongo -> show dbs创建数据库mongo -> show dbs但它是空的。

可能有什么东西拦截了服务器的请求? 可能是什么问题?

这个...

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

来之前:

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

由于它是app.usePOST /api/users仍会app.use该中间件, res.sendFile结束请求/响应。 您可能会看到您的帖子正在返回客户端HTML。

尝试将客户端HTML端点移动到中间件的末尾 ,就在错误处理程序之前(如果有的话)。 这样,只有在您的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) console.log(err); 我认为你应该改为if(err) return console.log(err);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM