如何在mongoose模式中查找和填充引用对象字段



我试图从下面的猫鼬模式获取数据,但我不确定如何获取角色字段,这是一种类型的RoleObject。

import * as mongoose from 'mongoose';
const Schema = mongoose.Schema;
const RoleObject = {
current_role: {
type: Schema.Types.ObjectId,
ref: 'Role',
autopopulate: true
},  
new_role: {
type: Schema.Types.ObjectId,
ref: 'Role',
autopopulate: true
}
}
const UserRequestSchema = new mongoose.Schema({
group: {
type: Schema.Types.ObjectId,
ref: 'Group',
autopopulate: true,
required: true
},
user: {
type: Schema.Types.ObjectId,
ref: 'User',
autopopulate: true,
required: true
},
role: {
type: RoleObject
},
status: {
type: String,
required: true,
enum: ['pending', 'approved', 'denied']
},
type: {
type: String,
required: true,
enum: ['group-join', 'role-change']
},
active: {
type: Boolean,
required: true
}
});
UserRequestSchema.index( { group: 1, user: 1 }, { unique: true } );
export { UserRequestSchema };

这里我想从UserRequestSchema填充角色字段,它是作为RoleObject给出的。

是否可以通过使用find方法填充字段,或者我需要使用聚合?

试试这个

UserRequest.find({active:true}).populate({
path: 'role.current_role role.new_role',
model: 'Role',
select: 'name'
}).exec((error, result) => {
if (error) {    
console.log(error, " ERROR")
}
console.log(result, "Result")
});

如果你遇到任何问题。请让我知道

最新更新