node.js - Mongoose 双向模型/多对多关系

标签 node.js mongodb express mongoose database

对 mongoose 还很陌生,所以我正在寻找执行此操作的最佳方法。我有两个模型: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')

最佳答案

我还没有找到让 populate 双向工作的方法。

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

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

关于node.js - Mongoose 双向模型/多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16111824/

相关文章:

mysql - 组合 mysql mongodb

javascript - 拦截器未正确发送 header

node.js - 如何显示弹出窗口而不是重定向到 Facebook?

mongodb - "ERROR 6000, Output location validation failed"在 EMR 上使用 PIG MongoDB-Hadoop 连接器

node.js - "sudo npm install -g grunt-cli"给我一个错误

javascript - 如何使用 Webpack 1.14 导入本地版本的 Google Material Icons .woff2?

node.js - 是否有任何 Node 包可以使用 Express 处理分块上传?

mongodb - 如何在 Meteor 应用程序之间共享 MongoDB 集合?

javascript - 数组在 res.json() 中为空,但在 res.json() 调用之前和之后都存在

javascript - Node JS 应用程序中未处理的错误