当前位置: 首页 > 面试题库 >

单节点和项目中的猫鼬和多个数据库

蔡修远
2023-03-14
问题内容

我正在做一个包含子项目的Node.js项目。一个子项目将拥有一个Mongodb数据库,Mongoose将用于包装和查询db。但是问题是

  • 猫鼬不允许在一个猫鼬实例中使用多个数据库,因为模型建立在一个连接上。
  • 要使用多个猫鼬实例,Node.js不允许使用多个模块实例,因为它在中具有缓存系统require()。我知道在Node.js中禁用模块缓存,但是我认为这不是一个好的解决方案,因为它只需要猫鼬。

我尝试使用createConnection()openSet()猫鼬,但这不是解决方案。

我尝试过深度复制猫鼬实例(http://blog.imaginea.com/deep-copy-in-
javascript/
),以将新的猫鼬实例传递给子项目,但是它抛出RangeError: Maximum call stack size exceeded

我想知道是否存在将多个数据库与猫鼬结合使用或解决此问题的任何解决方法?因为我认为猫鼬非常容易和快速。还是任何其他模块作为建议?


问题答案:

您可以做的一件事是,每个项目可能都有子文件夹。因此,在该子文件夹中安装mongoose并从每个子应用程序中自己的文件夹中进行require()猫鼬。并非来自项目根目录或全局。因此,一个子项目,一个猫鼬安装和一个猫鼬实例。

-app_root/
--foo_app/
---db_access.js
---foo_db_connect.js
---node_modules/
----mongoose/
--bar_app/
---db_access.js
---bar_db_connect.js
---node_modules/
----mongoose/

在foo_db_connect.js中

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/foo_db');
module.exports = exports = mongoose;

在bar_db_connect.js中

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/bar_db');
module.exports = exports = mongoose;

在db_access.js文件中

var mongoose = require("./foo_db_connect.js"); // bar_db_connect.js for bar app

现在,您可以使用猫鼬访问多个数据库。



 类似资料:
  • 问题内容: 我正在使用mongoose(在节点上),并且尝试通过使用Mongoose中间件在保存时向模型添加一些其他字段。 我正在考虑要添加lastmodifiedsince-date的常用情况。但是,我也想自动添加完成保存的用户的名称/配置文件链接。 我使用的护照- http://passportjs.org/这导致req.user存在, - 当然是在HTTP请求的。 谢谢 编辑 在调用嵌入式实

  • 我正在做一个包含子项目的Node.js项目。一个子项目将有一个Mongodb数据库,Mongoose将用于包装和查询DB。但问题是 > mongoose不允许在单个mongoose实例中使用多个数据库,因为模型是在一个连接上构建的。 要使用多个mongoose实例,Node.js不允许多个模块实例,因为它在中有缓存系统。我知道在node.js中禁用模块缓存,但我认为这不是一个好的解决方案,因为它只

  • 问题内容: 我读过猫鼬每个集合最多只能打开一个连接,并且没有选择来更改它。 这是否意味着缓慢的mongo查询将使所有后续查询都等待? 我知道node.js中的所有内容都是非阻塞的,但是我想知道慢速查询是否会延迟所有后续查询的执行。以及是否有办法改变这一点。 问题答案: 如果使用mongoose.connect()的默认方法,则它仅使用一个连接。要解决此问题,您可以创建多个连接,然后将指向同一架构的

  • 问题内容: 我一直在寻找答案,但我确信我迷失了正确的词来描述我的追求。 基本上,我有一个名为“ people”的mongodb集合,该集合的架构如下: 现在,我有一个非常基本的express应用程序,该应用程序连接到数据库并成功地使用一个空的friends数组创建了“ people”。 在应用程序的次要位置,有一个添加好友的表单。该表单接受firstName和lastName,然后包含名称字段的P

  • 我知道在最新版本的Mongoose中,您可以将多个文档传递给create方法,在我的例子中,甚至可以传递一个文档数组。 我的问题是数组的大小是动态的,所以在回调中创建一个对象数组会很有帮助。 文档中没有,但这样做可能吗?