Dav*_*ave 4 javascript mongoose mongodb node.js express
我正在尝试将多个 MongoDB 数据库连接到一个 Node.js 项目中。这是我当前的结构和手头的问题。
节点版本:v6.12.1
Express.js 版本:4.16.2
猫鼬版本:4.13.6
当前结构:
主数据库.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;Run Code Online (Sandbox Code Playgroud)
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;Run Code Online (Sandbox Code Playgroud)
然后,每个数据库连接分别导入到其模式文件中,模式文件从中具有模块导出。
手头的问题
当我运行我的应用程序时,它启动正常并成功连接到两个数据库,但是我相信猫鼬要么被覆盖,要么因为我可能能够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);
});
}Run Code Online (Sandbox Code Playgroud)
上面的问题是我可能会从对 Primary 的调用中获取数据,但不能从对 secondary 的调用中获取数据。我再次相信这是因为某些东西被覆盖了。
任何帮助表示赞赏。抱歉啰嗦了。
用于mongoose.createConnection创建您的联系
所以
const conn1 = mongoose.createConnection('first server options')
const conn2 = mongoose.createConnection('second server options')
Run Code Online (Sandbox Code Playgroud)
在这里阅读更多内容 http://mongoosejs.com/docs/connections.html#multiple_connections
| 归档时间: |
|
| 查看次数: |
7710 次 |
| 最近记录: |