我正在学习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();
});
});
我的问题是:
在哪里可以找到exec()函数的API文档?它是Mongoose函数吗?我怎么知道它是Mongoose函数还是JS或表达函数?
最终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);
});
});
感谢。
答案 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
顺便说一句,执行官并不表达。