我一直在研究node.js中的基本CRUD應用程序,express,mongodb和使用教程嘗試自行設置它。我不確定爲什麼我在POST請求中收到302響應。nodejs POST請求不張貼到數據庫並返回302響應
router.route('/')
.get(function(req, res, next) {
mongoose.model('User').find({}, function(err, users) {
if (err) {
return console.error(err);
} else {
res.format({
html: function() {
res.render('users/index', {
title: 'All Users',
"users": users
});
},
json: function() {
res.json(users);
}
});
}
});
})
.post(function(req,res) {
// get values from post request
var name = req.body.name;
var iscool = req.body.iscool;
// call the create function from mongoose
mongoose.model('User').create({
name: name,
iscool: iscool
}, function(err, user) {
if (err) {
res.send("There was a problem connecting to db");
} else {
console.log(res.statusCode);
console.log('Creating POST for ' + user.name);
res.format({
html: function() {
// if successful, set header address bar to "users"
res.location("users");
res.redirect("/users");
},
json: function() {
res.json(user);
}
});
}
})
});
哪裏CONSOLE.LOG(res.statusCode)它返回一個200 OK應答,但在我的Chrome瀏覽器開發工具我得到我的網絡請求302響應。我只是很困惑,我應該在哪裏尋找我的錯誤。我的表單的操作設置爲/用戶和路由器使用(/用戶)爲用戶控制器和路線。
這裏是形式以及:
<form name="adduser" action="/users" method="post">
<div>
<label for="name">Name:</label>
<input type="text" id="name" name="name">
</div>
<div>
<label for="iscool">Are you cool?</label>
<input type="checkbox" value="true" name="iscool">
<div>
<div>
<button type="submit">Submit</button>
</div>
任何幫助appeciated和間距的歉意!
嗨,你可能需要使用快遞_method-override_和_body-parser_,還設置_enctype_到窗體: '<形式方法= 「POST」 行動=「/ users」enctype =「application/x-www-form-urlencoded」>' –
@ ricardo-fornes so _method-override_ needed?我從教程中故意拿出來,因爲我不認爲這是必要的。 –
是的,_method-override_中間件不是必須的,只有當你想使用DELETE&PUT(在某些瀏覽器中不支持)方法時才需要 –