.I use callback to use variables after their values are updated. But the variables values are not updated. I can't find why. Do you have suggestions so that I can make my code synchronize and return the updated variables at last. Here is my code service layer
exports.getPeopleSummary =  (req, res, callback) => {
    req.query.limit = 1000
    req.query.offset = 0
    var headCount=0;
    var inCount=0;
    var outCount=0;
    var leaveCount=0;
    var absentCount=0;
    /////////head count
    emploployeeService.findAll(req,res, (employees)=>{
      headCount = employees.length
      console.log("Head",headCount)
    })
    //////in/out count
    
    let ts = Date.now();
    let date_ob = new Date(ts);
    let date = date_ob.getDate();
    let month = date_ob.getMonth() + 1;
    let year = date_ob.getFullYear();
    // prints date & time in YYYY-MM-DD format
    const today = year + "-" + month + "-" + date+"T08:30:00.000";
    const inOutCountSql = "SELECT fprints from attendence_tbl where date = ?"
    const inOutCountValues = [today]
    mysqlConnection.query(inOutCountSql,inOutCountValues,(err, records, fields) => {
      if (!err) {
        records.forEach(record=>{
        if(Array.isArray(record)){ //if record is an array
          if("in"==record[record.length-1].direction){
            inCount++
          }else if ("out"==record[record.length-1].direction){
            outCount++
          }
        }else{
          if("in"==record.direction){
            inCount++
          }else if ("out"==record.direction){
            outCount++
          }
        }
        })
      }
    
      else res.send(err);
    })
    /////leave count
    const leaveCountSql = "SELECT emp_no from leaves_tbl where leaveDate = ?"
    const leaveCountValues = [today]
    mysqlConnection.query(leaveCountSql,leaveCountValues,(err, leaves, fields) => {
      if (!err) {
        leaveCount=leaves.length
      }
    })
    absentCount = headCount-leaveCount
    callback(headCount, inCount, outCount, leaveCount, absentCount)
}
Here at controller layer
    exports.peopleSummary = async (req, res) => {
        try {analyticsService.getPeopleSummary(req, res, (headCount, inCount, outCount, leaveCount, absentCount)=>{
      res.send({"total_head_count:":headCount ,"in_count: ":inCount,"out_count: ":outCount, "leave_count: ":leaveCount, "absent_count: ":absentCount})
    });
        } catch (err) {
    console.log(err);}};
This outputs in console
Head 307 because it has 307 employee entries
but the response in postman is
{
    "total_head_count:": 0,
    "in_count: ": 0,
    "out_count: ": 0,
    "leave_count: ": 0,
    "absent_count: ": 0
}
 
    