0

我在这里想要做的是,

/expense/new页面提交POST请求到/expense/newPost

在 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 中,但浏览器没有重定向,只是等待服务器的响应

4

2 回答 2

3

您的保存回调未正确传递。

tmpExp.save(expPost, function(err2, savedDoc) {

应该:

tmpExp.save(function(err2, savedDoc) {
于 2012-10-29T07:53:17.083 回答
1

假设验证码是您从该文件中剥离的唯一内容,res未定义。我建议您只返回 Error 或 null 并在可能存在 res 的父函数中执行剩余的逻辑。这通常也是一个很好的做法,因为您的模型将是可重用的(模型中没有路径部分)

于 2012-10-29T05:38:14.807 回答