Currently I have this code for my connection mongoose.js:
var mongoose = require('mongoose'); var uriUtil = require('mongodb-uri'); var mongodbUri = 'mongodb://localhost/db_name'; var mongooseUri = uriUtil.formatMongoose(mongodbUri); mongoose.connect(mongooseUri); module.exports = mongoose;
File that requires the connection is test.js:
var mongoose = require('../model/mongoose'); var schema = mongoose.Schema({...});
How can I update mongoose.js to use multiple connections with mongoose.createConnection(...) function?
I start with changes only for one connection when I do changes like that:
var mongoose = require('mongoose'); mongoose.createConnection('mongodb://localhost/db_name'); mongoose.open('localhost'); module.exports = mongoose;
I get "undefined is not a function". If I use this code:
var mongoose = require('mongoose'); db = mongoose.createConnection('mongodb://localhost/db_name'); db.open('localhost'); module.exports = mongoose;
I get "Error: Trying to open unclosed connection"
Any advice?
Mongoose handling connections via connections pool http://mongoosejs.com/docs/connections.html
You can use server: {poolSize: 5}
option for increase/decrease pool (number of parallel connections)
If you need connections to different databases look here Mongoose and multiple database in single node.js project
Example of multiple connections:
var mongoose = require('mongoose') var conn = mongoose.createConnection('mongodb://localhost/db1'); var conn2 = mongoose.createConnection('mongodb://localhost/db2'); var Schema = new mongoose.Schema({}) var model1 = conn.model('User', Schema); var model2 = conn2.model('Item', Schema); model1.find({}, function() { console.log("this will print out last"); }); model2.find({}, function() { console.log("this will print out first"); });
OK. With your example I found a solution that fit my needs.
mongoose.js
var mongoose = require('mongoose'); mongoose.main_conn = mongoose.createConnection('mongodb://localhost/main'); mongoose.admin_conn = mongoose.createConnection('mongodb://localhost/admin'); module.exports = mongoose;
content.js
var mongoose = require('../model/mongoose'); var schema = mongoose.Schema({...}); /// functions here schema.statics.func_a(){...}; schema.statics.func_b(){...}; // And finaly updated only one line //exports.Content = mongoose.model('Content', schema); exports.Content = mongoose.main_conn.model('Content', schema);
The only thing, is it OK to add connection objects to mongoose object or may be there is more elegant solution.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With