带有MongoDB的NodeJS - 实例化" db"的最佳实践变量

时间:2014-03-28 23:56:47

标签: javascript node.js mongodb express

我目前正试图抓住NodeJS / Express / MongoDB并阅读有关它的几个教程。在this tutorial by Christopher Buecheler中,请考虑第5步和第6步:

app.js中,添加了以下代码:

// ...
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/nodetest1');

app.get('/userlist', routes.userlist(db));
// ...

routes/index.js中,您可以找到属于/userlist路线的处理程序:

exports.userlist = function(db) {
    return function(req, res) {
        // do stuff
    };
};

我对将db对象传递给每个处理程序感到困惑,因为在我看来,它会创建大量冗余,因为你需要将它传递给每个处理程序并在其周围包装一个额外的函数。所以我尝试将db对象的初始化添加到routes/index.js文件中,这似乎工作得很好并且在处理更多网址时节省了很多行:

var mongodb = require('mongodb');
var monk = require('monk');

var db = monk('localhost:27017/nodetest1');

exports.userlist = function(req, res) {
  // do stuff
};

由于我是MongoDB的新手,这样做有什么缺点吗?将db对象传递给每个处理程序有什么好处?

1 个答案:

答案 0 :(得分:0)

我个人就像你那样做,我在使用它的地方实例化。

但是我已经看到其他人在本教程中这样做了,每次都将它传递过去,我认为如果你需要在多个的地方使用该数据库它会有意义,想想你是否有许多不同的文件都需要该数据库......现在每次实例化它都是多余的。

嗯,那是我的2美分......不确定这个问题有什么“好”的答案......如果你需要它在整个地方,将它保存在app.js中可能是一个好习惯,但是如果仅在特定地点使用,我认为不会有任何不利之处。