我有一个用户模式,它有一个角色引用,这是一个ID数组,我想用角色ID过滤用户。
const users = await User.find(
{ roles: { $in: [params.role] } },
"-password"
)
.populate({
path: "roles",
});
字符串
这是我的用户模式。
const userSchema = new mongoose.Schema(
{
email: {
type: String,
required: true,
},
password: { type: String, required: true },
contact: { type: mongoose.Schema.Types.ObjectId, ref: "Contact" },
roles: [{ type: mongoose.Schema.Types.ObjectId, ref: "Role" }],
},
{
timestamps: true,
}
);
型
这里params.role是单个角色id,我在这里得到空的用户结果。
1条答案
按热度按时间e1xvtsh31#
如果
params.role
是一个单一的值,那么你不需要$in
。因为User.roles
是一个类型为ObjectId
的数组,mongoose应该为你将搜索字符串转换为ObjectId
,这样你就可以用正常的方式搜索,但要确保params.role
中有一个值,而不是你真正想要的req.params.role
:字符串