我有三个型号。我需要获取用户的管理员组名称
用户
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所以它必须支持深度人口。
感谢。
答案 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")
吗?