2016-12-06 56 views
-1

我運行了一個node.js服務器,當我導航到/foo/bar時,它進入router.get(),但爲什麼它也會進入mongodb.MongoClient.connect()關於在node.js中調用函數

它在哪裏被調用?

var mongodb = require('mongodb'); 

router.get('/foo/bar', function (req, res) { 
    console.log("in router get"); 

    mongodb.MongoClient.connect(uri, function(error, db) { 
      console.log("in mongo db"); 

    }); 
}); 
+1

當您導航到'/ foo/bar'時,會調用回調函數'function(req,res)...'。所以'connect'被稱爲 – ThomasThiebaud

+0

是正常的這是'connect'的正常行爲嗎?或回調總是調用裏面的函數定義? @ThomasThiebaud – shinzou

+0

當執行回調時,它會調用 – ThomasThiebaud

回答

1

我運行的node.js服務器,當我瀏覽到/富/酒吧進入router.get()

其實也沒什麼,它啓動進入router.get,您導航到前/foo/bar,這樣做只有一次。

,但爲什麼它也進入mongodb.MongoClient.connect()?

因爲那是的router.get目的:告訴快遞(用於此庫),當有一個爲/foo/bar的請求時,它應該運行在給定的回調。因此,當您導航到/foo/bar時,Express會調用回調,回調的代碼將調用mongodb.MongoClient.connect。這種情況會反覆發生,任何時候都會向服務器請求/foo/bar

+0

因此,如果有多個具有不同路徑的'router.get()',它們是否都在啓動時被調用? – shinzou

+0

@kuhaku:他們都在*啓動時調用*(在腳本中沒有調用它們的分支邏輯),但是它們的*回調*直到/除非有一個匹配路徑的請求被調用服務器。 –

相關問題