Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

451
Views
Efficient way to check if username/email already exist in MongoDB for registration

I'm in a NodeJS server using ExpressJS to handle my /register route. One step in my registration process is to ensure that the user's username and email are both unique, if so, they can register and add their account to the users collection.

Currently, my code is as follows for this "checking if username/email exists" step:

// Checking is user already exists (username & email)
try {
    const usernameExists = await User.findOne({username: req.body.username});
    const emailExists = await User.findOne({email: req.body.email});
    if (usernameExists && emailExists) return res.status(400).send("Username and email already taken");
    if (emailExists) return res.status(400).send("Email already taken");
    if (usernameExists) return res.status(400).send("Username already taken");
} catch (e) {
    return res.status(500).send("Error querying DB to check if username/email exists or not");
}

This feels highly inefficient as I'm doing two queries to the database. Is there anyway to combine the two User.findOne... queries? Or is this how this task is supposed to be done?

Thanks so much!

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

You can check for unique values in schema itself, just add unique in schema for the field you want. Like this

email:{
   unique:true,
   required:true,
},
username:{
   unique:true,
   required:true,
}
about 4 years ago · Juan Pablo Isaza Report

0

You could use $or

await User.findOne({
  $or: [{ username: req.body.username }, { email: req.body.email }],
})
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!