Note: Please read the edited portion of this post before answering, it might save you time and answers one of my questions.

我遇到的问题非常简单,但总体来说,我对这一点非常陌生,我在弄清楚如何在node/express应用程序中正确实现mongodb数据库连接时遇到了问题.

我用的是express 3.x和am根据Express:

我对写博客没有兴趣,但是应用程序的 struct 看起来很不错.路由是分开的,一切都井然有序.

我的问题是,我可能有5-6个不同的路由js文件,每个路由js文件可能有1到15条路由;在这些路由中,1或15可能想要访问数据库.

所以我的问题是,做db似乎是个非常糟糕的主意.打开(…)每次我想查询数据库.我应该提到的是,目前我使用的是原生mongo db驱动程序(npm install mongodb).

我还需要包括这样一个文件:

...在所有这些布线文件和我的所有模型文件中.然后我还要处理几十个打开的连接.

有没有一种方法可以让我的应用程序只建立一个连接,并且在会话期间保持打开状态(每次请求都创建一个新的连接也不好)?

如果是,我该怎么做?如果你知道答案,请使用tj的博客应用程序(本文前面链接的应用程序) struct 发布一个代码示例作为基本指南.基本上,路由和模型可以自由地使用db,而不是使用db open代码.

谢谢

EDIT

我在解决我的一个问题上取得了一些进展.如果你看tj的博客示例,他会在应用程序中初始化他的路由.就像这样:

require('./routes/site')(app);
require('./routes/post')(app);

在routes js文件中,它是这样开始的:

module.exports = function(app){

I stumbled on a project earlier today where I saw someone pass 2 variables in the modules.exports call -> function(app, db). Then figured wow could it be that easy, do I need to just adjust my routes to be (app, db) too? Yeah, it seems so.

现在问题的第一部分已经解决了.我不需要蒙哥.js文件和每个路由文件中的连接样板文件.同时,它足够灵活,我可以 Select 通过db引用的路由文件.这是标准的,没有缺点,对吧?

然而,问题的第二部分(不幸的是,重要的问题)仍然存在.

我怎样才能绕过必须做的db.打开(…)在每次查询中,理想情况下,每次会话只进行一次连接?

推荐答案

真傻.在文档中,它看起来像db.open需要被包装在使用它的任何东西上,但实际上,您可以在不回调的情况下使用它.

所以答案就是做一个db.在数据库连接模块app中打开().js文件或您决定设置db服务器/连接的任何位置.

只要在使用数据库的文件中传递对该数据库的引用,就可以访问"已打开"的数据库连接,以便进行查询.

Mongodb相关问答推荐

MongoDB合并按键更新值的对象数组

在MongoDB Aggregate for My BooksDB中将`$match`放在`$unwin`之前或之后的区别

MongoDB - 来自先前匹配文档的聚合匹配字段

MongoDB 聚合 groupBy 日期并计算子文档

在 ExpirePolicy 之后从 Store 中删除元素

如何根据_id删除文档?

查找对象是否在预保存钩子mongoose中更改

Node.js 和 Passport 对象没有方法 validPassword

如何解决 ClassNotFoundException:com.mongodb.connection.BufferProvider?

无法连接到远程 mongodb 服务器

在 mongoDB 中展平嵌套的 JSON struct

docker 在不同的端口上运行 mongo 映像

mongodb:upserting:仅在插入文档时设置值

C# MongoDB 驱动程序 - 如何使用 UpdateDefinitionBuilder?

在 MongoDB 中为现有用户更改密码

MongoDB Compass timeouts超时

对于社交网站(使用 Ruby on Rails 开发)来说,MongoDB 会是一个好主意吗?

Mongodb同时在多个字段上聚合(计数)

我可以使用字符串作为 mongodb 文档的 ID 类型吗?

如何使用 mongodb-java-driver 进行 upsert