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

Node.js中部门经理列表接口如何排除刚创建的新用户供其选择汇报经理

实现方法

你有两种实现思路,推荐优先用第一种,避免出现重名用户被误过滤的问题:

方案1:通过用户ID过滤(推荐)

这个方案需要前端调用接口时额外传入当前新注册用户的ID,接口调用格式调整为:
/department/getManagersList?department_name=IT&current_user_id=6103d7c1f2bba5af7cad4083
后端代码修改点:

  1. 新增接收当前用户ID的参数
  2. 在往manager_list中插入数据前,判断当前员工ID不等于传入的新用户ID才插入
    修改后的完整代码如下:
adminController.getManagersList = async (req, res) => {
try {
var manager_list = []; 
var department_data = {}; 
var employees_list = []; 
var manager_details = {};
var department_name = req.query.department_name;
// 新增:获取当前新用户的ID参数
var current_user_id = req.query.current_user_id;

if (isEmpty(department_name))
  return res.status(400).json({
    status: "failure",
    message: `Department name ${emptyField}`,
  });
// 新增:校验当前用户ID参数非空
if (isEmpty(current_user_id))
  return res.status(400).json({
    status: "failure",
    message: `Current user id ${emptyField}`,
  });
department_data = await DepartmentData.findOne({
  department_name: department_name,
})
  .populate("employees")
  .exec();
if (isEmpty(department_data))
  return res
    .status(400)
    .json({ status: "failure", message: `Department ${dataNotFound}` });

employees_list = department_data.employees;

employees_list.forEach((empList) => {
  let department_data = empList.department;
  department_data.forEach((depList) => {
    if (depList.name == department_name) {
      // 新增:判断当前员工不是新用户才加入列表
      if(empList._id.toString() !== current_user_id) {
        manager_details = {}; 
        manager_details.id = empList._id;
        manager_details.name = empList.full_name;
        manager_details.role = depList.role;
        manager_list.push(manager_details);
      }
    }
  });
  
});
res.status(200).json({ status: "success", managersList: manager_list });
} catch (err) {
   console.log(err);
   res
    .status(500)
    .json({ status: "failure", message: "Internal Server Error" });
 }
 };

方案2:通过用户名过滤(临时使用)

如果暂时无法调整前端传参,也可以直接按用户名过滤,但是存在重名用户被误过滤的风险,仅适合临时使用,修改点就是在插入数据前判断用户名不等于sam winchester即可:
核心过滤逻辑:

if(empList.full_name !== 'sam winchester') {
  // 插入列表逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 04:30:05