我可以在猫鼬中填充对象道具吗?
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')
我现在的方案
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')