MongoDB和Mongoose - 一对多关系

时间:2015-08-03 03:03:43

标签: node.js mongodb mongoose one-to-many

我有一段时间了解MongoDB中的一对多关系选项。我有一个相当简单的用例,我想证明这一点,而且我似乎无法在我的Google(和Stack Overflow)-Fu中找到任何好的步骤。

如果我访问mongo的命令行工具,请将文档插入" users"具有与对象中的_id对应的role_id的String数组的集合" roles"收藏...我如何在猫鼬方面将所有这些绑在一起?当我使用findOne方法时,它似乎只是按原样拉出" role_id"所以我知道我必须遗漏一些东西。

如果我将所有这些角色放入用户而没有任何参考,那么如果我需要启用或禁用角色会发生什么?我是否需要更新每个用户的每个相关角色?

非常感谢另一位新蒙古人的帮助和耐心!

1 个答案:

答案 0 :(得分:2)

根据你的解释,你忘了使用“填充”#39;在您的查询中。请注意,结果不会包含链接文档,因此您需要使用'填充'为了让猫鼬知道 - 嘿,我想提取有关这个角色的信息'。

示例:

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

请检查以下链接: