MongoDB 和 Mongoose - 一对多关系

MongoDB and Mongoose - One to Many Relationships

我很难理解 MongoDB 中的一对多关系选项。我有一个相当简单的用例,我想证明这一点,但我似乎无法通过 Google(和 Stack Overflow)-Fu 找到任何好的分步说明。

如果我访问 mongo 的命令行工具,将文档插入到 "users" 集合中,其字符串数组 role_id 对应于 [=20] 中的 _id =] 集合...如何在 mongoose 端将所有这些集合在一起?当我使用 findOne 方法时,它似乎只是按原样提取 "role_id"s,所以我知道我一定遗漏了一些东西。

如果我在没有任何参考的情况下将所有这些角色赋予用户,如果我需要启用或禁用角色会怎样?我是否需要更新每个用户的每个相关角色?

非常感谢您对另一个新 Mongoer 的帮助和耐心!

根据您的解释,您只是忘记在查询中使用 'populate'。请注意,结果将不包含链接文档,因此您需要使用 'populate' 让 mongoose 知道 - 'Hey, I want to pull info about this role as well'.

示例:

//promises
User
  .findOne(<searchQuery>)
  .populate('roles')
  .exec()
  .then(function(foundUser){
      return foundUser; //do something with results (foundUser)
  })
  .onReject(function(err){
      throw err; //do something with error
});

//callbacks
User
  .findOne(<searchQuery>)
  .populate('roles')
  .exec(function(err, foundUser){
      if(err){
          throw err; //do something with error
      } else {
          //do something with results (foundUser)
      }
});

请检查以下链接: