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

MEAN Stack - what's the purpose of returning next() inside a router.param exec function?

我正在通过很棒的在线教程学习 MEAN 堆栈。其中,使用 express 的 param().

by id 有一个 section about preloading objects
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 函数还是 JS 或 express 函数?

  2. final 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);
      });
    });
    

谢谢。

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

顺便说一下,exec 不是 expressjs。

首先请阅读您使用的每个库的文档,如果您只阅读 mongoose 的文档,您会弄清楚什么是 exec() !

好了,现在我们可以关注重点了

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

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