Mongoose bidirectional models / many to many relationships
database, express, mongodb, mongoose, node.js
Solution
I haven't found a way to get populate to work both ways.
Normally we end up doing something like this
/**
* Load the categories for this account
* @method categories
* @memberof Account
* @instance
* @param {Function} done
*/
AccountSchema.methods.categories = function (done) {
var Category = this.model('Category');
return Category.find({account: this}, done);
};
Problem
Fairly new to mongoose so I'm looking for the best way to do this. I have two models: `Users` and `Companies`. A user can have many companies and a company can have many users. Right now my Company Schema looks like this: ``` CompanySchema = new Schema name: type: String unique: true slug: type: String users: [ type: Schema.Types.ObjectId ref: 'User' ] ``` And then I can use `.populate('users')` to get a list of associated users. No problem there. What I'm wondering is, what is the most efficient/best way to get all `companies` associated with a `user`? I don't want to do the same as above as the lists could get out of sync. Is there a way that when I update a company's user that the user's companies are also updated? Ideally, I could just do `User.find().populate('companies')`