猫鼬深人口(特定领域)

时间:2017-08-15 21:58:54

标签: mongoose

我有三个型号。我需要获取用户的管理员组名称

用户

  var userSchema = new mongoose.Schema({
    // ...
    roles: {
      admin: { type: mongoose.Schema.Types.ObjectId, ref: 'Admin' }, // path 1
    },
 });

管理

  var adminSchema= new mongoose.Schema({
    // ...
    groups: [{ type: String, ref: 'AdminGroup' }], // path 2
  });

AdminGroup的

  var adminGroupSchema = new mongoose.Schema({
    // ...
    name: { type: String, default: '' }, // need to get this field
  });

在Mongoose中

User.findById(req.user._id)
    .populate({path: 'roles.admin', populate:{ path: 'groups'}})
      .exec(function (err, adminGroups) {...}

当我尝试调用我的模板{{adminGroups.name}}时,它会返回name Admin模型,该模型还有一个name字段,而不是AdminGroup模型。
我使用Mongoose 4.9.0所以它必须支持深度人口。 感谢。

1 个答案:

答案 0 :(得分:1)

您正在使用findById并填充其字段。

您还没有回复adminGroups,但可能拥有user 可能包含数组的roles.admin一个人groups User。我使用 may 这个词,因为如果它们不存在,那些其他字段可能不会被填充。但是,如果有文档,您仍会收到一份User.findById(req.user._id).populate({ path: 'roles.admin', populate: { path: 'groups' } }).exec(function (err, user) { console.log(err, user); // see what it prints out console.log(user.roles.admin.groups[0].name); }); 文档。

AdminGroup

在架构定义中不应该是AccountGroup而不是library(dplyr) library(ggplot2) dummydf <- expand.grid(var1 = paste0("trt", 1:5), var3 = paste0("C_", 11:15)) %>% mutate(value = runif(length(var1)), var2 = ifelse(var1 %in% c("trt1", "trt2"), "grp1", "grp2")) ggplot(dummydf, aes(var1, value, fill = var3)) + geom_col(position = "stack") + facet_grid(~var2, scales = "free_x", space = "free_x") 吗?