Using mongoose promises with asynchronous / wait

I am trying to use Mongoose promises with asynchronous / pending Node.js functions. When my function is called printEmployees, I want to keep a list of employees who are requested by the function orderEmployees. While the statement console.loginside orderEmployeesreturns the expected request, console.loginside printEmployeesreturns undefined, assuming that I will not return my promise correctly.

I am new to promises so completely that I misunderstand the paradigm ... any help is greatly appreciated.

  printEmployees: async(company) => {
    var employees = await self.orderEmployees(company);
    // SECOND CONSOLE.LOG
    console.log(employees);
  },

  orderEmployees: (companyID) => {
    User.find({company:companyID})
    .exec()
    .then((employees) => {
      // FIRST CONSOLE.LOG
      console.log(employees);
      return employees;
    })
    .catch((err) => {
      return 'error occured';
    });
  },
+18
source share
5 answers

return Promise, , undefined.

orderEmployees: (companyID) => {
  return User.find({ company:companyID }).exec()
}

-Promise, ; , , .

, throw return .catch.

+17

orderEmployees async, . promises async/await :

  • , Promise
  • (, async), .then , .

async/await, await promises.

, , orderEmployees. , .

orderEmployees: (companyID) => {
  return User.find({company:companyID}) // Notice the return here
  .exec()
  .then((employees) => {
    // FIRST CONSOLE.LOG
    console.log(employees);
    return employees;
  })
  .catch((err) => {
    return 'error occured';
  });
},

orderEmployees: async(companyID) => {
  try {
    const employees = await User.find({company:companyID}).exec();
    console.log(employees);
    return employees;
  } catch (err) {
    return 'error occured';
  }
},

PS: . , . , .

+21

Promise orderEmployees.

printEmployees: async(company) => {
  var employees = await self.orderEmployees(company);
  // SECOND CONSOLE.LOG
  console.log(employees);
},

orderEmployees: (companyID) => {
  return User.find({company:companyID})
 .exec()
 .then((employees) => {
   // FIRST CONSOLE.LOG
   console.log(employees);
   return employees;
 })
 .catch((err) => {
   return 'error occured';
 });
},
+4

Promise orderEmployees

orderEmployees: companyId => User.find({ companyId }).exec()

If you want to do some error handling or preprocessing before returning, you can save your code as is, but just remember to return the result (promises are chains).

+2
source

Please help me with my code. Returns the name {}

  let timetableFunc = (name) => {
                        let a = timetable.find({ sectionID: name }).exec()
                        return a.then(result => {
                            if (result[0] !== undefined) {
                                console.log(result[0])
                              return result[0]
                            } 
                        })
                    }

                    let asyncf = async () => {

                        let arr = await sections[0].section.map(sect => {
                            let name = timetableFunc(sect.name);
                             console.log('name is ${JSON.stringify(name)}');
                        })

                    }

                    asyncf()
0
source

All Articles