gpt4 book ai didi

javascript - 单个node.js项目中的Mongoose和多个数据库

转载 作者:IT老高 更新时间:2023-10-28 11:12:47 29 4
gpt4 key购买 nike

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

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

    我曾尝试在 mongoose 中使用 createConnection()openSet(),但这不是解决方案。

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

我想知道是否有使用 mongoose 的多个数据库或任何解决此问题的方法?因为我认为 Mongoose 非常容易和快速。或者任何其他模块作为推荐?

最佳答案

根据the fine manual , createConnection() 可以用来连接多个数据库。

但是,您需要为每个连接/数据库创建单独的模型:

var conn      = mongoose.createConnection('mongodb://localhost/testA');
var conn2 = mongoose.createConnection('mongodb://localhost/testB');

// stored in 'testA' database
var ModelA = conn.model('Model', new mongoose.Schema({
title : { type : String, default : 'model in testA database' }
}));

// stored in 'testB' database
var ModelB = conn2.model('Model', new mongoose.Schema({
title : { type : String, default : 'model in testB database' }
}));

我很确定您可以在它们之间共享架构,但您必须检查以确保。

关于javascript - 单个node.js项目中的Mongoose和多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19474712/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com