2016-09-02 73 views
0

我目前的计划我可以用猫鼬填充对象道具吗?

const departmentSchema = new mongoose.Schema({ 
    users: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }] 
    ... 
}) 

现在我需要ACL(角色)添加到每个用户。 ACL应保存在用户附近,但不能保存在里面,因为同一用户在不同的层次上可能有不同的ACL。

所以打算用这个方案是这样的:

marketingDepartment: { 
    usersWithAcl: [ 
     { user:xxxxx, ACL: 'admin' }, 
     { user:yyyyy, ACL: 'employee' }, 
    ]} 

我想使用类似find({}).populate('usersWithAcl.user')然后在user道具让整个用户对象。

能用猫鼬做吗? 如果是,我应该如何构建我的模式来实现它?

是否有更好的解决方案来实现我的目标?

回答

2

是的,你可以从对象属性填充。

,如:

const departmentSchema = new mongoose.Schema({ 
    usersWithAcl: [{ 
    user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, 
    ACL: String 
    },_id: false],//added _id: false to avoid generate mongoose id in usersWithAcl 
    //....... 
}) 
mongoose.model('Department', departmentSchema); 

,并填入找到

Department.find({}).populate('usersWithAcl.user')