当我发布到/ insertUser和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);
});
}
编辑:
SyntaxError: Unexpected token o
at Object.parse (native)
at Object.saveUser (schemas.js:42:22)
at Object.handle (server.js:25:9)
at next_layer (route.js:103:13)
at Route.dispatch (route.js:107:5)
at c (index.js:195:24)
at Function.proto.process_params (index.js:251:12)
at next (index.js:189:19)
at next (index.js:166:38)
at Layer.urlencodedParser [as handle] (index.js:70:44)
答案 0 :(得分:3)
在客户端
Cannot GET /insertUser
表示这是一条GET路线,浏览器在点击链接或输入页面网址时会调用该路线。
但是您指定了app.post('/insertUser'...
,这意味着只有在使用POST方法时才会调用该路由(例如,在提交表单时使用,从不点击链接时使用)
如果这是表单的结果,请不要忘记指定方法(<form method="post">
)。对于ajax调用也一样。
如果您想在开发模式下测试,可以使用chrome上的Postman轻松调用POST路由。如果你没有镀铬使用卷曲。
返回端强>
快递身体解析器不包含在Express 4.0中,因此您需要安装它然后使用它:
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
答案 1 :(得分:2)
我认为在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.");
});
...