填充具有mongoose中给定角色的用户

时间:2013-09-13 22:55:46

标签: node.js mongodb mongoose

我有两个模式,我一直用来在我的基本网站上运行用户和权限。该网站由一个express.js框架和mongob上的mongoose组成。模式看起来类似于:

UserSchema = new Schema({
  Name: { type: String },
  Email: { type: String },
  Roles: [{ type: ObjectId, ref: 'Role' }]
});

RoleSchema = new Schema({
  Name: { type: String }
})

我可以插入有或没有角色的用户,我可以创建没有问题的角色。删除角色时会出现此问题。用户最终会维护对它的引用,并在尝试搜索用户的角色时导致问题。我需要做的是像

UserModel.find({ })
  .where('Roles').contains(roleID)
  .exec(function(err, users) { })

这应该只给我拥有该角色的用户。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

当mongodb查询默认为someArray: someValue时,它将其解释为“匹配someArray包含someValue的任何父文档”。所以这很简单:

UserModel.find({Roles: roleId}, callback);

旁注:当你问一个关于猫鼬的问题并使用'populate'这个词时,这意味着mongoose的填充功能。在这种情况下,您似乎在询问有关vanilla集合查询的信息。