在我的ExpressJS应用程序中,我有两条通往同一位置的路线,一条是“get”,另一条是“post”。
在“get”页面上,它通过MongooseJS转储我的MongoDB集合中的所有文档,然后是一个向集合中添加新记录的表单。
在“post”页面上,它接收表单数据并将其添加到集合中,然后显示您通过“get”看到的相同页面。
它可以工作,但在表单提交后,新记录不会出现,除非我重新加载页面。我将呈现页面的代码放在最底部,在将数据添加到集合的部分下面,所以在我看来,这应该是可行的,但它不起作用。
exports.index = function(req, res){
  Server.find({},
    function(err, docs) {
      if (!err){ 
          res.render('servers', { title: 'verify', results: docs});
      }
      else { console.log(err);}
    }
  );
}
exports.add = function(req, res){
  newServer = new Server({
    name: req.body.name,
    os: req.body.os,
    osVersion: req.body.osVersion
  });
  newServer.save(function (err) {
    if (err) {
      console.log(err);
  }
  });
  Server.find({},
    function(err, docs) {
      if (!err){ 
          res.render('servers', { title: 'verify', results: docs});
      }
      else { console.log(err);}
    }
  );
}发布于 2014-02-05 04:06:31
是的,这些数据库查询是异步的,所以回调可以解决这个问题。但是,您应该考虑使用promises。Mongoose默认返回promises,你也可以选择导入你的库。在处理嵌套回调和查询以及错误处理时,它们将派上用场。
https://stackoverflow.com/questions/21438517
复制相似问题