2017-04-08 66 views
0

我一直在学习nodejs的最后几次停留,我偶然发现了一些我找不到任何好解释。Nodejs - 正常回调vs exec

基本上它是关于exec VS正常的回调,即(err, res) => {},像这样:

Product.find({}).exec((err, products) => {}); 

Product.find({}, (err, products) => {}); 

我发现,使用exec更多的例子,但是当我读到exec我真的不能明白为什么。他们似乎都对我做着同样的事情。

所以,我的问题是,我应该使用其中一个,如果是的话,为什么?

编辑:

只是为了把事情说清楚,Product是MongoDB的模型/架构。就像这样:

const Product = mongoose.model('Product', new Schema({ 
    title: {type: String, default: ''}, 
    description: {type: String, default: ''}, 
    price: {type: Number, default: ''} 
})); 
+0

这不是关于NodeJS的问题。这是一个关于“产品”属于哪个库的问题,以及在使用该库的API的两种不同方式之间有什么区别(如果有的话)。如果你不告诉我们它是什么库,我们无法帮助你。我们可以猜测它是什么,但是要求猜测并不是一个好主意。 (也请务必在发布之前仔细阅读库API文档,作为您的尽职调查研究的一部分,并引用任何相关内容。) –

+0

@ T.J.Crowder产品只是一个mongodb模型。 – Chrillewoodz

+0

@ T.J.Crowder更新后的问题。 – Chrillewoodz

回答

2

只是参考以下答案Mongoose - What does the exec function do?

EXEC通常用于执行动态创建查询。

以下是一个简单的代码,提供了一个可以使用exec的概念。

employee.find({}, function (err, docs) { 
    // statements 
}); 

employee.find({}).populate("designation").exec(function (err, docs) { 
    // statements 
}); 
+0

好吧,我想我明白了。谢谢。 – Chrillewoodz

+0

如果它是重复的(很好找,它是),请不要回答,对连接到dupetarget的那种效果的评论,这样具有投票 - 关闭权的人可以关闭它。 –

+0

@ T.J.Crowder我发布的内容就是一个例子。您无法在链接上找到它。为了理解回调和exec之间的区别,我添加了链接。 –