How can I share mongoose models between 2 apps?

I have 2 apps, each in a different folder and they need to share the same models.

I want to symlink the models folder from app A to a models folder in app B.

I'm running into issues with the fact that once you call mongoose.model('Model', Schema) in app A, they are 'tied' to that app's mongoose/mongodb connection.

Does anyone have any tips on the best way to manage this?

You have share your mongoose instance around by using doing something like this

var mongoose = require('mongoose');
module.exports.mongoose = mongoose;

var user = require('./lib/user');

Now inside of "lib/user.js"

var mongoose = module.parent.mongoose;
var model = mongoose.model('User', new mongoose.Schema({ ... });
module.exports = model;

So doing it like that you can require "lib/user.js" in other applications

./shared/models/user.js

./app1/app.js
var user = require('../shared/user.js');

./app2/app.js
var user = require('../shared/user.js');

I dont' see why you couldn't just load the models from a shared path.

What I ended up doing here was importing app1 as a submodule (with Git) in app2. This way the models can be imported as normal and are tied to the app's default mongoose connection.