来自两个连接的mongoose模型
我有以下设置:
/models/index.js
var glob = require('glob'); var mongoose = require('mongoose'); var Promise = require('bluebird'); mongoose.Promise = Promise; mongoose.connect('mongodb://localhost/firstDB', { useMongoClient: true }); var models = glob.sync(__dirname + '/*.js', {ignore: '**/index.js'}); models.forEach(function (model) { require(model); });
/models/movie.js
var mongoose = require('mongoose'); var movieSchema = new mongoose.Schema({ title: String }, {timestamps: true}); mongoose.model('movie', movieSchema);
/app.js
require('./models'); ... var Movie = mongoose.model('movie'); ...
我想从同一个app.js
文件访问secondDB
模型,我该怎么做?
更新:最终设置应该是这样的:
(不知道如何将连接传递给模型)
/models/index.js
var glob = require('glob'); var mongoose = require('mongoose'); var Promise = require('bluebird'); mongoose.Promise = Promise; var firstConnection = mongoose.connect('mongodb://localhost/firstDB', { useMongoClient: true }); var secondConnection = mongoose.connect('mongodb://localhost/secondDB', { useMongoClient: true }); var firstModels = glob.sync(__dirname + '/*.js', {ignore: '**/index.js'}); firstModels.forEach(function (model) { require(model); }); var secondModels = glob.sync(__dirname + '/second/*.js'); secondModels.forEach(function (model) { require(model); });
/models/movie.js
var mongoose = require('mongoose'); var movieSchema = new mongoose.Schema({ title: String }, {timestamps: true}); mongoose.model('movie', movieSchema);
/models/second/car.js
var mongoose = require('mongoose'); var carSchema = new mongoose.Schema({ color: String }, {timestamps: true}); mongoose.model('car', carSchema);
/app.js
require('./models'); ... var Movie = mongoose.model('movie'); var Car = mongoose.model('car'); ...
试试这个,谢谢!
var mongoose = require('mongoose') var connection1 = mongoose.createConnection('connectionstring1'); var connection2 = mongoose.createConnection('connectionstring2');
检查这个URL – http://mongoosejs.com/docs/connections.html
并转到多个连接部分。
编辑:
connectionOne.js
var mongoose = require('mongoose'), mongoURI = 'mongodb://user:password@localhost:27017/dbOne'; module.exports = connectionOne = mongoose.createConnection(mongoURI); connectionOne.on('connected', function() { console.log('Mongoose connected to connectionOne'); }); require('./events')
connectionTwo.js
var mongoose = require('mongoose'), mongoURI = 'mongodb://user:password@localhost:27017/dbTwo'; module.exports = connectionTwo = mongoose.createConnection(mongoURI); connectionTwo.on('connected', function() { console.log('Mongoose connected to connectionTwo'); }); require('./events')
events.js
var mongoose = require('mongoose'), connectionOne = require('./connectionOne'); var Event = new mongoose.Schema({ name: { type: String, required: true }, date: { type: Date, required: false } }); var connectionTwo = require('./connectionTwo'); var newEvent = new mongoose.Schema({ name: { type: String, required: true }, organizer: { type: String, required: true } }); module.exports = { connectionOne.model('Event1', Event); connectionTwo.model('Event2', newEvent); }
有关更多解释 – 处理多数据库和连接与mongoose
- 注 – 我没有testing它。