skip to Main Content

everytime i register with same email on register page it still record on my mongodb whereas i expect it to not recorded

i try to write unique:true on email var at User.js like this

import bcrypt from 'bcrypt';
import { Schema, model, models } from "mongoose";



const UserSchema = new Schema({
    email: {type: String, required: true, unique: true},
    password: {
        type: String, 
        required: true, 
        validate: pass => {
        if(!pass?.length || pass.length < 5){
            new Error('password setidaknya harus 5 karakter');
            return false;
            }
        },
    },
    
},{timestamps: true});


UserSchema.post('validate', function (user){
    const notHashedPassword = user.password;
    const salt = bcrypt.genSaltSync(10);
    user.password = bcrypt.hashSync(notHashedPassword, salt);
})




2

Answers


  1. Chosen as BEST ANSWER

    i added an unique index on my database by writing db.users.createIndex({ email: 1 }, { unique: true })

    so that mongoDB will enforce the uniqueness constraint on the email field going forward, ensuring that no new duplicate emails can be inserted into the collection.


  2. Try changing the const to const UserSchema = mongoose.Schema and see if that helps.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search