javascript - NodeJS 与 MongoDB - 实例化 "db"变量的最佳实践

标签 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 对象传递给每个处理程序有什么好处?

最佳答案

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

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

好吧,这就是我的 2 美分...不确定是否有任何“好的”答案...将其保留在 app.js 中可能是一个很好的做法,以防您到处都需要它,但是我认为如果只在特定的地方使用,那么这样做没有任何缺点。

关于javascript - NodeJS 与 MongoDB - 实例化 "db"变量的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22725194/

相关文章:

javascript - 那么如何在请求时从另一个文件运行代码

performance - MongoDB 多键索引写入性能下降

javascript - 当插入符在 textarea 中的行之间移动时触发事件

javascript - 后面有数据库的 Node/羽毛

javascript - 从 EventEmitter 继承是一种反模式吗?

mongodb - 如何使用Gorm(Mongo)保存嵌入式对象的ID字段

c# - 当 C# 端没有等效值时,我们如何处理 Enum 的反序列化错误?

javascript - JavaScript Chrome 控制台中的脚本未打印错误

javascript - 您能为 Web 应用程序推荐一个演示文稿幻灯片页面编辑器吗? (所见即所得,但不是 HTML)

javascript - 在学习 NodeJs 时,我遇到了 "cannot get ' 地址“”问题