Я пытаюсь зашифровать некоторые пароли и получить их соль перед сохранением моей модели в mon goose в Nest js, но простое использование this
для ссылки на саму схему не дает никаких результатов, поскольку она ссылается к самому объекту UserSchemaProvider
, вместо текущей модели, которую я пытаюсь сохранить.
Мой поставщик схемы:
export const UserSchemaProvider = {
name: 'User',
useFactory: (): mongoose.Model<User> => {
const UserSchema = new mongoose.Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
birthday: { type: Date, required: true },
celphoneNumber: String,
whatsapp: Boolean,
promo: Object,
status: String
});
UserSchema.pre<User>('save', async (next) => {
const user = this;
console.log(user);
if (user.password) {
const salt = await bcrypt.genSalt();
bcrypt.hash(user.password, salt, (err, hash) => {
if (err) return next(err);
user.password = hash;
next();
});
}
});
return UserSchema;
},
};
и мой пользователь Module
ниже:
@Module({
imports: [
MongooseModule.forFeatureAsync([
UserSchemaProvider]),
HttpModule
],
controllers: [UsersController],
providers: [UsersService, Validator, ValidationPipe, IsEmailInUseConstraint, GoogleRecaptchaV3Constraint],
})
: информация о платформе Nest:
платформа- express версия: 6.10.14
мес goose версия: 6.3.1
общая версия: 6.10.14
базовая версия: 6.10.14