I have 4 await calls that I need to call in a row. What I currently have works fine but it just looks like bad code to me. Is there a better way to write this? I tried using promise-chaining, but it just looked worse as expected.
adminSchema.statics.generateUsername = async(firstName, lastName) => {
let generatedUsername = `${firstName}.${lastName}`.toLowerCase()
let countTracker = 0
const Count = ((count) => {
if (count >= 1) {
count++
countTracker += count
console.log("counted")
console.log(countTracker)
}
})
await Admin.countDocuments({ username: { $regex: new RegExp(generatedUsername) } }, (err, count) => {
console.log("admin ran")
Count(count)
})
await Teacher.countDocuments({ username: { $regex: new RegExp(generatedUsername) } }, (err, count) => {
console.log("teacher ran")
Count(count)
})
await Student.countDocuments({ username: { $regex: new RegExp(generatedUsername) } }, (err, count) => {
console.log("student ran")
Count(count)
})
await Scheduler.countDocuments({ username: { $regex: new RegExp(generatedUsername) } }, (err, count) => {
console.log("scheduler ran")
Count(count)
})
if (countTracker === 0) {
generatedUsername = `${firstName}.${lastName}`.toLowerCase()
} else {
generatedUsername = `${firstName}.${lastName}.${countTracker}`.toLowerCase()
}
console.log(countTracker)
return generatedUsername
}
countDocumentsreally return a Promise and accept a callback?[Admin, Teacher, Student, Scheduler], map it to an array of Promises, then usePromise.all. No duplicate code that way.awaitif you are usingcallbacks?