2016-09-02 48 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')