每次我在注册页面上用相同的邮箱注册,它仍然记录在我的mongodb上,而我希望它不记录

我try 在User.js的邮箱变量上写下Unique:True,如下所示

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);
})




推荐答案

我在我的数据库上添加了一个唯一的索引, db.users.createIndex({ email: 1 }, { unique: true })

因此mongoDB将对邮箱字段强制执行唯一性约束,确保没有新的重复邮箱插入到集合中.

Javascript相关问答推荐

JS生成具有给定数字和幻灯片计数的数组子集

是否有方法在OpenWeatherMap API中获取过go 的降水数据?

Google Apps脚本中的discord邀请API响应的日期解析问题

JQuery. show()工作,但. hide()不工作

扫描qr code后出错whatter—web.js

在Vite React库中添加子模块路径

将本机导航路由react 到导航栏中未列出的屏幕?

查找最长的子序列-无法重置数组

在open shadow—root中匹配时,使用jQuery删除一个封闭的div类

Reaction Redux&Quot;在派单错误中检测到状态Mutations

在VS代码上一次设置多个变量格式

如何防止ionic 输入中的特殊字符.?

更新Redux存储中的对象数组

在验证和提交表单后使用useNavigate()进行react 重定向,使用带有加载器和操作的路由

如何在一个对象Java脚本中获取不同键的重复值?

如何使用抽屉屏幕及其子屏幕/组件的上下文?

ReferenceError:无法在初始化之前访问setData

我们是否可以在reactjs中创建多个同名的路由

Refine.dev从不同的表取多条记录

观察子组件中的@Output事件emits 器?