关于node.js中的函数调用

时间:2016-12-06 08:01:03

标签: javascript node.js syntax invoke

我运行了一个node.js服务器,当我导航到/foo/bar时,它进入router.get(),但为什么它也会进入mongodb.MongoClient.connect()

它在哪里被调用?

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 个答案:

答案 0 :(得分:1)

  

我运行了一个node.js服务器,当我导航到/ foo / bar时,它进入router.get()

实际上没有,它在启动上输入router.get,然后导航到/foo/bar,并且只执行一次。

  

但为什么它也会进入mongodb.MongoClient.connect()?

因为这是router.get的目的:告诉Express(用于此的库)当有/foo/bar的请求时,它应该运行给定的回调。因此,当您导航到/foo/bar时,Express会调用回调,而回调的代码会调用mongodb.MongoClient.connect。只要有/foo/bar的服务器请求,就会反复发生这种情况。