You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Express.js的server.js中连接两个不同MongoDB集群?

连接多个MongoDB集群到Express服务器的正确方法

问题分析

你之前的两种尝试都存在问题:

  • 多次调用mongoose.connect()会覆盖默认连接实例,最终只会保留最后一次的连接,无法同时维护两个集群的连接。
  • mongoose.createConnection()返回的是Connection实例而非Promise,所以不能直接链式调用.then(),需要通过事件监听处理连接状态。

解决方案代码示例

以下是正确实现双集群连接的代码,同时为每个连接绑定对应的数据模型:

const express = require("express");
const app = express();
const jwt = require("jsonwebtoken");
const fs = require('fs');
const mongoose = require("mongoose");
let refreshTokens = [];
app.use(express.json());

// 第一个MongoDB集群:创建独立连接实例
const db1Connection = mongoose.createConnection(
  "mongodb+srv://Nacer:<password>@cluster0.fnv49eh.mongodb.net/?retryWrites=true&w=majority",
  {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  }
);

// 监听第一个连接的状态
db1Connection.on('connected', () => {
  console.log("Connecté à MongoDB 集群1");
});
db1Connection.on('error', (err) => {
  console.error("Erreur de connexion à MongoDB 集群1:", err);
});

// 第二个MongoDB集群:创建另一个独立连接实例
const db2Connection = mongoose.createConnection(
  "mongodb+srv://nacereddine:<password>@cluster0.fnv49eh.mongodb.net/?retryWrites=true&w=majority",
  {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  }
);

// 监听第二个连接的状态
db2Connection.on('connected', () => {
  console.log("Connecté à MongoDB 集群2");
});
db2Connection.on('error', (err) => {
  console.error("Erreur de connexion à MongoDB 集群2:", err);
});

// 为第一个集群定义模型(绑定到db1Connection)
const userSchema = new mongoose.Schema({
  id: String,
  username: String,
  email: String,
  password: String,
  isAdmin: Boolean,
});
const UserDb1 = db1Connection.model("user", userSchema);

// 若需为第二个集群定义模型,绑定到db2Connection即可
// const UserDb2 = db2Connection.model("user", userSchema);

核心要点

  • 每个MongoDB集群对应一个独立的mongoose.createConnection()实例,确保两个连接同时存在且互不干扰。
  • 通过connected和error事件监听连接状态,替代Promise链式调用。
  • 定义数据模型时,必须使用对应集群的连接实例(如db1Connection.model()),才能让模型绑定到指定集群。

内容的提问来源于stack exchange,提问作者Chouich Nacereddine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 11:57:28