我目前正在尝试掌握 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
对象传递给每个处理程序有什么好处?
最佳答案
我个人就像你一样,在使用它的地方实例化它。
但是我看到其他人像在本教程中那样做,每次都会传递它,我认为如果您需要在多个地方使用该数据库,这确实有意义,想想如果您有许多不同的文件都需要该数据库...现在每次都实例化它,这将是多余的。
好吧,这就是我的 2 美分...不确定是否有任何“好的”答案...将其保留在 app.js 中可能是一个很好的做法,以防您到处都需要它,但是我认为如果只在特定的地方使用,那么这样做没有任何缺点。
关于javascript - NodeJS 与 MongoDB - 实例化 "db"变量的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22725194/