使用mongoose在node js中连接多个mongo db数据库

问题描述 投票:0回答:3

我在 Node js 中使用 mongoose 进行 mongo 数据库连接。谁能告诉我如何在 Node js 中连接多个数据库。另请确保您自己尝试过该方法。谢谢。

编辑:我想动态连接到多个数据库。另外,我不想要多个模型,我只有一个项目,而不是各种子项目。

node.js mongodb mongoose database
3个回答
4
投票

我相信您正在从主入口点作为index.js或server.js连接到mongoDB,您将在其中启动路由器。像这样 `

    const mongoose = require('mongoose')
    // mongoose
    mongoose.connect("mongoDB url");
    const connection = mongoose.connection;
    connection.on('open',()=>{
        console.log(" database connected")
    })
    connection.on('error',()=>{
        console.log("error in connecting to database")
    })
    app.use(morgan('dev'));
    app.use(bodyParser.urlencoded({extended: false}));
    app.use(bodyParser.json());
    //middlewares`

以同样的方式,您还可以直接连接到不同的数据库模式。就像在我的用例中一样,我想将用户存储在不同的数据库中,并将帖子存储在另一个数据库中。 在我的 app.js 中,我将作为正常连接(上面)连接到主数据库,对于用户模式,我将连接到我的用户数据库。像这样

    const mongoose = require('mongoose');
    const connection = mongoose.createConnection("mongo url ");
    const userSchema = mongoose.Schema({
       name: String,
       date_of_birth: Date
      })
    module.exports = mongoose.model('User', userSchema);

您也可以使用

mongoose.connect()
代替
mongoose.createConnection()

希望这对您有帮助。


0
投票
const mongoose = require('mongoose');
require('dotenv').config()



const makeNewConnection = (uri) => {
    const db = mongoose.createConnection(uri, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        // useCreateIndex: true
    });

    db.on('error', function (error) {
        console.log(`MongoDB :: connection ${this.name} ${JSON.stringify(error)} - ${new Date().toISOString()}`);
        db.close().catch(() => console.log(`MongoDB :: failed to close connection ${this.name} - ${new Date().toISOString()}`));
    });

    db.on('connected', function () {
        console.log(`MongoDB :: connected ${this.name} - ${new Date().toISOString()}`);
    });

    db.on('disconnected', function () {
        console.log(`MongoDB :: disconnected ${this.name} - ${new Date().toISOString()}`);
    });

    return db;
}


const db_charge_config = process.env.DB_HOST_RECHARGE;
const db_log_config = process.env.DB_HOST;


const Connection_db_charge = makeNewConnection(db_charge_config);
const connection_db_log = makeNewConnection(db_log_config);

module.exports = {
    Connection_db_charge,
    connection_db_log
};`enter code here`

0
投票

我为此创建了一个简单的包。 mongoplusplus

导入

const mongoplusplus = require('mongoplusplus');

初始化中

const dbname = 'testforUP';

const mongoURI1 = `mongodb+srv://xxxxx:[email protected]/${dbname}?retryWrites=true&w=majority`;
const mongoURI2 = `readonly:mongodb+srv://xxxxxxx:[email protected]/${dbname}?retryWrites=true&w=majority`;
const mongodb = new mongoplusplus([mongoURI1, mongoURI2]);

readonly:
用于将数据库标记为只读。 ([mongoURI1, mongoURI2]);

连接数据库

这是主页中的顶层内容(在此测试代码中,在

mongodb
变量声明下)

const mongodb = new mongoplusplus([mongoURI1, mongoURI2]);

(async () => {
  await mongodb.connectToAll();
})();

大部分内容都基于 mongoose 包,因此如果您遵循文档,您就会理解一切。

文档

© www.soinside.com 2019 - 2024. All rights reserved.