You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Mongoose按角色查询用户时同时返回管理员角色用户的技术实现问询

解决方案:查询指定角色时同时返回管理员用户

要实现“查询任意角色时自动包含管理员角色用户”的需求,只需要调整角色查询的条件,使用MongoDB的$in操作符来匹配目标角色+管理员角色的集合即可。

修改你的listAllStaffs方法

核心变化是把原来精确匹配单个角色的逻辑,换成匹配包含目标角色和admin角色的数组:

public async listAllStaffs(query: ListStaffsRequestQueryDTO) {
  let conditions = {};
  if (query.role) {
    // 用$in同时匹配目标角色和admin角色
    conditions = { 
      role: { $in: [query.role, 'admin'] }, 
      'hub.id': query.merchant 
    };
  } else {
    conditions = {'hub.id': query.merchant };
  }
  const data = { page: query.page, limit: query.limit, conditions: conditions};
  const all = await this.list(data);
  const pagination = { page: all.page, limit: all.limit, rowCount: all.rowCount, pageCount: all.pageCount };
  const staffs = all.staffs;
  return { staffs, pagination };
}

关键逻辑说明

  • 当传入query.role(比如operation)时,查询条件会变成role: { $in: ['operation', 'admin'] },这样MongoDB会返回所有角色是operation或者admin的用户。
  • 如果没有传入query.role,则保持原逻辑,只返回当前商户下的所有用户。
  • 注意:如果你的管理员角色标识不是'admin',请替换成你系统中实际使用的角色值(比如'super_admin')。

额外说明

如果担心当查询的角色本身就是admin时出现重复匹配(比如$in: ['admin', 'admin']),完全不用担心——MongoDB的$in操作符会自动处理重复值,不会影响查询结果的正确性和性能。

内容的提问来源于stack exchange,提问作者King

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 19:42:42