MEAN Stack - 在router.param exec函数中返回next()的目的是什么?

时间:2015-09-25 15:24:30

标签: node.js mongodb express mongoose meanjs

我正在学习MEAN堆栈,并在网上提供了很棒的教程。其中,使用express的param()有一个section about preloading objects id。

router.param('post', function(req, res, next, id) {
  var query = Post.findById(id);

  query.exec(function (err, post){
    if (err) { return next(err); }
    if (!post) { return next(new Error('can\'t find post')); }

    req.post = post;
    return next();
  });
});

我的问题是:

  1. 在哪里可以找到exec()函数的API文档?它是Mongoose函数吗?我怎么知道它是Mongoose函数还是JS或表达函数?

  2. 最终return next()的目的是什么?在exec()函数中是否有必要return next()?如果没有这条线会怎么样?我已经读过next()是针对下一个中间件的,但是在本教程的其他函数中,如下所示,没有最终的next()return next()。不管怎样,next()return next()之间有什么区别?

    router.post('/posts', function(req, res, next) {
      var post = new Post(req.body);
    
      post.save(function(err, post){
        if(err){ return next(err); }
    
        res.json(post);
      });
    });
    
  3. 感谢。

2 个答案:

答案 0 :(得分:1)

首先,请阅读您使用的每个图书馆的文件,如果您只阅读猫鼬文件,您会发现exec()是什么!

好的,现在我们可以专注于这一点

Q1:exec()是猫鼬功能。如果你遇到这种情况,你无法弄清楚代码中发生了什么,请check this out。 当您需要有关功能(方法),属性或...(在离线时间完美工作)的信息时,此Web应用程序可以为您提供帮助。

Q2:Please read this question(顺便说一下,我认为你的上一个问题是重复的)

答案 1 :(得分:0)

MEAN正在使用快递。 next()告诉express服务器去调用下一个中间件。 http://expressjs.com/guide/using-middleware.html

顺便说一句,执行官并不表达。