2017-04-08 72 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之間的區別,我添加了鏈接。 –