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

Mongoose和多数据库在single node.js项目中的应用

丌官嘉勋
2023-03-14
问题内容

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

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

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

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

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


问题答案:

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

-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访问多个数据库。



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

  • 问题内容: 我正在做一个包含子项目的Node.js项目。一个子项目将拥有一个Mongodb数据库,Mongoose将用于包装和查询db。但是问题是 猫鼬不允许在一个猫鼬实例中使用多个数据库,因为模型建立在一个连接上。 要使用多个猫鼬实例,Node.js不允许使用多个模块实例,因为它在中具有缓存系统。我知道在Node.js中禁用模块缓存,但是我认为这不是一个好的解决方案,因为它只需要猫鼬。 我尝试使

  • 使用java 7(JDK1.7.0_79)的Im。但当我要调试或运行项目时,会出现以下错误: 意外的顶级异常:java.lang.RuntimeException:在com.android.dx.command.dexer.main.processClass(main.java:752)在com.android.dx.command.dexer.main.processFileBytes(main

  • 需求描述 有一个项目,面向学校德育评价,打算留一个发布通知的模块,现在拿不准如何设计数据库 个人方案 我个人有预想两种方案去解决 在mysql中建一个系统通知表 直接存redis中 第一种方案的优点是可以实现数据的持久化,但是对于一些时效性较强的通知【例如系统维护通知等】需要进行额外处理【因为基本上过了时效以后这条记录几乎不会再用到了】 第二种方案的优点是可以比较轻松的处理时效性问题,但是需要考虑

  • 我需要一个概念来设计一个使用Spring boot、Hibernate和JPA的多数据库应用程序。 目前我正在考虑支持4个关系数据库(Mysql,H2,SQLLite,Oracle)。 我所做的是使用spring boot profile特性选择正确的数据库profile,然后加载相关的数据库属性。

  • 我的应用程序使用一个库项目“核心项目”和应用程序核心,然后针对每个支持的设备的特殊性进行小项目“子项目”,即。亚马逊Fire TV、Kindle平板电脑、普通谷歌平板电脑、手机等。 比方说,我有一个自定义视图类,它以编程方式扩展布局。两者都在核心项目上: 然而,自定义视图在核心项目res/layout下不断膨胀另一个视图(毕竟听起来合乎逻辑,因为它们都位于同一个项目中)。 有没有办法改变这种行为?