Spaces:
Sleeping
Sleeping
const mongoose = require('mongoose'); | |
const bcrypt = require('bcryptjs'); | |
const userSchema = new mongoose.Schema( | |
{ | |
username: { | |
type: String, | |
required: [true, '请输入用户名'], | |
unique: true, | |
trim: true, | |
}, | |
password: { | |
type: String, | |
required: [true, '请输入密码'], | |
minlength: [6, '密码长度不能小于6个字符'], | |
}, | |
isAdmin: { | |
type: Boolean, | |
default: false, | |
}, | |
}, | |
{ | |
timestamps: true, | |
} | |
); | |
// 密码匹配方法 | |
userSchema.methods.matchPassword = async function (enteredPassword) { | |
try { | |
return await bcrypt.compare(enteredPassword, this.password); | |
} catch (error) { | |
console.error('密码比较出错:', error); | |
return false; | |
} | |
}; | |
// 保存前加密密码 | |
userSchema.pre('save', async function (next) { | |
if (!this.isModified('password')) { | |
return next(); // 修复:确保不重复加密 | |
} | |
try { | |
const salt = await bcrypt.genSalt(10); | |
this.password = await bcrypt.hash(this.password, salt); | |
next(); | |
} catch (error) { | |
next(error); | |
} | |
}); | |
const User = mongoose.model('User', userSchema); | |
module.exports = User; |