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

标签 javascript node.js mongodb express reactjs

将 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 但它是空的。

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

最佳答案

这...

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 结束请求/响应.您可能会看到您的帖子正在返回客户端 HTML。

尝试将您的客户端 HTML 端点移动到中间件的末端,就在错误处理程序之前(如果有的话)。这样,只有在您的 API 端点都不匹配时才会使用它。或者,如果您只希望 GET/ 返回 HTML,请将 use 更改为 get:

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'));
});

关于javascript - 为什么带有 MongoDB 的 Node.js Express 不响应获取 API 调用(ReactJS 和 Redux)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39238766/

相关文章:

node.js - 在 Windows 10 上运行 ngserve 命令时出现问题。这个问题不同并且不重复

MongoDB 映射/减少 "NoMethodError: undefined method ` map_reduce' for #<Moped::Collection"

node.js - 如何根据 JSON 数据渲染多个部分?

javascript - 无法单击 onClick() 事件下拉列表中的 anchor 标记

javascript - 无法使用 angular.js 注入(inject) datepicker 模块

javascript - 是否可以删除具有该 div id 上的事件的元素的 div id?

python - Django View 发送带有正确 header 的空回复

javascript - 无法增加/减少Vue中的数据属性值

javascript - Gulp 中基本 JavaScript 字符串相等失败

node.js - Socket.io : sending to all clients in a namespace,(不包括发件人)