我在这里想做的是,
从 /expense/new
页面向 /expense/newPost
提交 POST
请求
在 Expressjs 上,这样处理
app.post('/expense/newPost', function(req, res) { ...
继续,使用mongoose
我将集合验证为
tmpExp = new Expense(req.body);
tmpExp.validate(function(err) {
if(err || !isValidForm) {
req.session.form.errField = _.extend(req.session.form.errField, (err.errors || err ));
req.session.rePop = req.body;
res.redirect('/expense/new');
} else {
console.log('now saving') // successfully logs here.
tmpExp.save(expPost, function(err2, savedDoc) {
if(err2) {
req.session.flash = {
global: true
, css: "error"
, message: "Internal Server Error"
}
res.redirect('/expense/new');
} else {
res.redirect('/expense/new?success=' + savedDoc.bill_id);
}
});
}
});
为了清晰起见,我删除了一些验证代码。
现在的问题是,浏览器提交POST请求后,数据成功保存在mongodb中,但浏览器没有重定向,只是等待服务器的响应
最佳答案
您的保存回调未正确传入。
tmpExp.save(expPost, function(err2, savedDoc) {
应该是:
tmpExp.save(function(err2, savedDoc) {
关于node.js - 来自 mongoose 回调的 Express js res.redirect() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13116242/