Node.js Express可以';无法获取Post数据

Node.js Express可以';无法获取Post数据,node.js,express,Node.js,Express,当我发布到/insertUser和it schema.saveUser(req)时,它找不到正确的数据。我正在使用节点检查器,它找不到我的帖子数据。我也试过req.body,但它什么也没找到。我正在发送一个json var express = require('express'); var bodyParser = require('body-parser'); var schema = require("./schemas"); var app = express(); app.get('/

当我发布到/insertUser和it schema.saveUser(req)时,它找不到正确的数据。我正在使用节点检查器,它找不到我的帖子数据。我也试过req.body,但它什么也没找到。我正在发送一个json

var express = require('express');
var bodyParser = require('body-parser');
var schema = require("./schemas");
var app = express();

app.get('/hello.txt', function(req, res){
  res.send('Hello World2');
});

app.post('/insertUser', function(req, res){
console.log("Request handler 'insertUser' was called.");
//console.log(req.body);

schema.saveUser(req);

response.writeHead(200, {"Content-Type": "text/plain"});
res.send("You've sent the text: " + req);
response.write("The following data has been saved to the database: " + jsonString);
res.end();
});

var server = app.listen(8888, function() {
    console.log('Listening on port %d', server.address().port);
});



function saveUser(postData){
  var jsonObj = JSON.parse(postData);

  var newUser = new User({
    name: jsonObj.name,
     email: jsonObj.email,
    photoURL: jsonObj.photourl,
    groups: jsonObj.groups
  });

  newUser.save(function(err, newUser) {
    if (err) return console.error(err);
    console.dir(newUser);
  });
}
编辑:


在客户端中

无法获取/insertUser
表示这是一个获取路径,当单击链接或输入页面URL时,浏览器会调用该路径

但是您指定了
app.post(“/insertUser”…
,这意味着只有在使用post方法时才会调用路由(例如在提交表单时使用,在单击链接时从不使用)

如果这是表单的结果,请不要忘记指定方法(
)。ajax调用也是如此

如果你想在开发模式下进行测试,你可以在chrome上轻松调用POST路由。如果你没有chrome,可以使用curl

后端

Express 4.0中不包含Express body解析器,因此您需要先安装它,然后再使用它:

var express = require('express');
var bodyParser = require('body-parser');
var schema = require("./schemas");
var app = express();

app.use(bodyParser());

app.get('/hello.txt', function(req, res){
  res.send('Hello World2');
});

然后您可以在客户端中使用
req.body

无法获取/insertUser
表示这是一个获取路径,当单击链接或输入页面URL时,浏览器会调用该路径

但是您指定了
app.post(“/insertUser”…
,这意味着只有在使用post方法时才会调用路由(例如在提交表单时使用,在单击链接时从不使用)

如果这是表单的结果,请不要忘记指定方法(
)。ajax调用也是如此

如果你想在开发模式下进行测试,你可以在chrome上轻松调用POST路由。如果你没有chrome,可以使用curl

后端

Express 4.0中不包含Express body解析器,因此您需要先安装它,然后再使用它:

var express = require('express');
var bodyParser = require('body-parser');
var schema = require("./schemas");
var app = express();

app.use(bodyParser());

app.get('/hello.txt', function(req, res){
  res.send('Hello World2');
});

然后您可以使用
req.body

我认为在Express 4中,您需要使用
router
对象,而不是
app
来定义路由…类似这样的内容:

var express = require('express');
var bodyParser = require('body-parser');
var schema = require("./schemas");
var app = express();

var router = express.Router();

router.get('/hello.txt', function(req, res){
  res.send('Hello World2');
});

router.post('/insertUser', function(req, res){
console.log("Request handler 'insertUser' was called.");
});
...

我认为在Express 4中,您需要使用
路由器
对象而不是
应用程序
来定义路由…类似这样:

var express = require('express');
var bodyParser = require('body-parser');
var schema = require("./schemas");
var app = express();

var router = express.Router();

router.get('/hello.txt', function(req, res){
  res.send('Hello World2');
});

router.post('/insertUser', function(req, res){
console.log("Request handler 'insertUser' was called.");
});
...

你的中间件配置是什么?我不太确定那是什么?
app.use(express.router)
而我没有这些东西,很可能问题出在客户端。你是如何发布到服务器的?你的中间件配置是什么?我不太确定那是什么?
app.use(express.router)
而这些东西我没有,很可能问题出在客户端。你是如何向服务器发帖的?