快速mongoose过滤器数组的id

vdzxcuhz  于 11个月前  发布在  Go
关注(0)|答案(1)|浏览(150)

我有一个用户模式,它有一个角色引用,这是一个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,我在这里得到空的用户结果。

e1xvtsh3

e1xvtsh31#

如果params.role是一个单一的值,那么你不需要$in。因为User.roles是一个类型为ObjectId的数组,mongoose应该为你将搜索字符串转换为ObjectId,这样你就可以用正常的方式搜索,但要确保params.role中有一个值,而不是你真正想要的req.params.role

console.log('params.role=', params.role);
const users = await User.find({ roles: params.role}, "-password").populate({
    path: "roles",
});

字符串

相关问题