gpt4 book ai didi

javascript - 在 Node.js 项目中连接多个 Mongo DB

转载 作者:行者123 更新时间:2023-11-30 14:51:01 26 4
gpt4 key购买 nike

我正在尝试将多个 MongoDB 数据库连接到一个 Node.js 项目中。这是我目前的结构和手头的问题。

Node 版本:v6.12.1

Express.js 版本:4.16.2

Mongoose 版本:4.13.6

当前结构:

primaryDB.js

var mongoose = require('mongoose');
var configDB = require('./database.js');


//Connect to MongoDB via Mongoose
mongoose.Promise = require('bluebird');

//mongoose.Promise = global.Promise;
mongoose.connect(configDB.url, { useMongoClient: true });


//Check for successful DB connection
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log("Primary DB Successfully Connected..");
});

module.exports = mongoose;

secondaryDB.js

var mongoose = require('mongoose');

mongoose.connect('mongodb://mongodb_address_goes_here:27017/db_name', { useMongoClient: true });

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log("Secondary DB Successfully Connected..");
});


module.exports = mongoose;

然后每个数据库连接分别导入到它们的模式文件中,模式文件从中导出模块。

手头的问题

当我运行我的应用程序时,它启动正常并成功连接到两个数据库,但是我相信 mongoose 要么被覆盖,要么因为我可以在主数据库上执行 findOne() 命令,但是辅助失败,反之亦然。

示例:

var async = require('async');
var primaryModel = require('../../../models/general/primary');
var SecondaryModel = require('../../../models/general/secondary');


function getInfo() {

async.waterfall([
getPrimaryName,
getSecondaryName
], function (err, info) {
});
};

function getPrimaryName(callback){
Primary.findOne({}, function (err, primaryInfo){
if (err) {
console.log("Error" + err);
}
console.log('Primary info is : ' + primaryInfo);
callback(null,primaryInfo);
});
}



function getSecondaryName(primaryInfo, callback) {

console.log(primaryInfo); //Make sure its being passed

Secondary.findOne({}, function (err, secondaryInfo) {
if (err) {
console.log("Error" + err);
}
console.log('Secondary Info is : ' + secondaryInfo);
callback(null, secondaryInfo);
});
}

上面的问题是我可能会从对主要而不是次要的调用中获取数据。我再次相信这来自于被覆盖的东西。

感谢任何帮助。抱歉冗长。

最佳答案

使用 mongoose.createConnection 创建连接

所以

const conn1 = mongoose.createConnection('first server options')
const conn2 = mongoose.createConnection('second server options')

在这里阅读更多 http://mongoosejs.com/docs/connections.html#multiple_connections

关于javascript - 在 Node.js 项目中连接多个 Mongo DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48101323/

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