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

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

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

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

我想知道有没有办法用mongoose使用多个数据库,或者解决这个问题的方法?因为我觉得mongoose 很容易也很快.或者其他模块作为建议?

推荐答案

您可以做的一件事是,每个项目可能都有子文件夹.因此,在该子文件夹中安装mongoose,并要求在每个子应用程序中从自己的文件夹中安装()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_访问中.js文件

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

现在,您可以使用mongoose访问多个数据库.

Node.js相关问答推荐

Google Drive API返回200(HTTP成功)用于测试pdf输出,但没有文件

如何在CustomGPT的 node 中使用服务器端事件(SSE)

在我的Next.js应用程序中没有正确设置Process.env.NODE_ENV

FindOne()返回所有值,而不是一个值

FiRestore UPDATE方法引发错误:&Quot;错误:13内部:收到代码为1&Quot;的RST_STREAM

try 使用 pdf.js 时 pdf.getPage 不是函数

是否可以在 NodeJS 代码库中的每个函数之前和之后添加 console.log?

如何使用 Remix 仅在客户端呈现组件?

我应该如何解决这个 Angular node 包模块依赖冲突?

Next.js 在我的电脑上没有构建错误,但它们在使用 Vercel 部署时发生

Pug - 包括带有include关键字的c代码

Mongoose,如何一次更新多个?

如何获取在 NodeJS 中执行的脚本的文件名?

ISODate 未定义

chart.js 无法创建图表:无法从给定项目获取上下文

Node.js 17.0.1 Gatsby 错误-数字信封 routine ::不支持 ... ERR_OSSL_EVP_UNSUPPORTED

找不到在 docker compose 环境中运行的 node js 应用程序的模块

在 Node.js 上使用 Connect 无法获取 /

npm install packagename --save-dev 不更新 package.json

我无法全局安装 nodemon,nodemon无法识别