我可以在猫鼬中填充对象道具吗?

May i populate object prop in mongoose?

我现在的方案

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 属性中获取整个用户对象。

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

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

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

喜欢:

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);

并使用 populate

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