Node.js Express可以';无法获取Post数据
当我发布到/insertUser和it schema.saveUser(req)时,它找不到正确的数据。我正在使用节点检查器,它找不到我的帖子数据。我也试过req.body,但它什么也没找到。我正在发送一个jsonNode.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('/
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)
而这些东西我没有,很可能问题出在客户端。你是如何向服务器发帖的?