How to check if an email already exists using Mongoose in Node.Js?

If you want to check whether an email already exists in a MongoDB database using Mongoose in Node.js, you can execute a query to locate a document that contains the email you're looking for. Here is a simple guide that outlines the steps you need to take to accomplish this:

Step 1: Define Your Mongoose Model.

Define your Mongoose schema and model for the collection that stores user information, including email addresses.

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  email: { type: String, unique: true, required: true },
  // Other user fields...

const User = mongoose.model('User', userSchema);

module.exports = User;

Make sure you set the unique attribute to true for the email field in the schema to ensure that no two documents have the same email address.

Step 2: Check Email Existence.

In your Express route or controller, you can check if an email exists by querying the database using the findOne method.

const express = require('express');
const User = require('./models/user'); // Path to your user model

const app = express();

app.get('/check-email/:email', async (req, res) => {
  const email =;

  try {
    const user = await User.findOne({ email });

    if (user) {
      // Email already exists
      return res.json({ exists: true });

    // Email doesn't exist
    return res.json({ exists: false });
  } catch (error) {
    return res.status(500).json({ error: 'Internal server error' });

app.listen(3000, () => {
  console.log('Server is running on port 3000');

Step 3: Test the Endpoint.

You can now send a GET request to the /check-email/:email endpoint to check if an email already exists. Replace the email with the email address you want to check.

For example, if your server is running locally on port 3000, you can use a tool like curl or test it in a browser:


The response will indicate whether the email already exists in the database.

Please keep in mind that the example provided is very basic. In a real-world situation, it is essential to respond in a more sophisticated manner. Handling errors correctly and sanitizing user input is crucial to avoid potential vulnerabilities such as SQL injection.

Muhammad Alfaiz
Alfaiz 7 months ago
Notify of
Inline Feedbacks
View all comments
Would love your thoughts, please comment.x