Home > Net >  Mongoose get multiple collection data using query
Mongoose get multiple collection data using query

Time:05-13

I am trying to join two mongoose collection and fetch all related details using the query which i have mention below. Problem is I am getting only one table details employee collection not able get two collection detail when I call GetEmployeeDetails(emp_id) . Need a suggestion. How to get two collection data in one query.

const EmployeeInfoSchema = mongoose.Schema({
  employee_id: String,
  client_id: {
    type: Schema.Types.Number,
    ref: "client",
  },
  email: String,
  contact: String,
});

const ClientInfoSchema = mongoose.Schema({
  client_id: Number,
  employee_id: {
    type: Schema.Types.String,
    ref: "employee",
  },
  project: String,
  organization: String,
});

let employeeInfo = mongoose.model("employee", EmployeeInfoSchema);
let clientInfo = mongoose.model("client", ClientInfoSchema);

module.exports = { employeeInfo, clientInfo };

Query

async function GetEmployeeDetails(emp_id) {
  let employee_info = await Storage.employeeInfo
    .find()
    .where({ employee_id: emp_id })
    .populate({
      path: "client",
    })
    .exec(function (err, block) {
      if (err) {
        console.log("%s", err);
      }
      console.log("Employee details is %s", employee_info);
    });

  return employee_info;
}

CodePudding user response:

Try to change your GetEmployeeDetails method like this:

async function GetEmployeeDetails(emp_id) {
  try {
    let employee_info = await Storage.employeeInfo
      .find({ employee_id: emp_id })
      .populate('client')
      .exec(function (err, block) {
        if (err) console.log('%s', err);
        else console.log('Employee details is %s', employee_info);
      });

    return employee_info;
  } catch (err) {
    res.status(400).send('Error getting details');
  }
}
  • Related