小编典典

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

javascript

我正在做一个包含子项目的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非常容易和快速。还是任何其他模块作为建议?


阅读 298

收藏
2020-04-25

共1个答案

小编典典

您可以做的一件事是,每个项目可能都有子文件夹。因此,在该子文件夹中安装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访问多个数据库。

2020-04-25