Mongoose双向模型/多对多关系

时间:2013-04-19 19:06:12

标签: node.js mongodb express mongoose database

猫鼬相当新,所以我正在寻找最好的方法来做到这一点。我有两个模型:UsersCompanies。用户可以拥有许多公司,公司可以拥有许多用户。

现在我的公司架构看起来像这样:

CompanySchema = new Schema
  name:
    type: String
    unique: true
  slug:
    type: String
  users: [
    type: Schema.Types.ObjectId
    ref: 'User'
  ]

然后我可以使用.populate('users')获取关联用户列表。没问题。

我想知道的是,让companiesuser相关联的所有User.find().populate('companies')的最有效/最佳方法是什么?我不想像上面那样做,因为列表可能不同步。当我更新公司的用户时,有没有一种方法可以更新用户的公司?

理想情况下,我可以{{1}}

1 个答案:

答案 0 :(得分:6)

我还没有办法让人们双向工作。

通常我们最终会做这样的事情

/**
 * 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);
};