我在 Node js 中使用 mongoose 进行 mongo 数据库连接。谁能告诉我如何在 Node js 中连接多个数据库。另请确保您自己尝试过该方法。谢谢。
编辑:我想动态连接到多个数据库。另外,我不想要多个模型,我只有一个项目,而不是各种子项目。
我相信您正在从主入口点作为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()
希望这对您有帮助。
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`
我为此创建了一个简单的包。 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();
})();