как вызвать pre hooks в mongo db es6? - PullRequest
0 голосов
/ 03 декабря 2018

Я хочу вызвать prehook в MongoDB перед сохранением в базе данных.Я использую классы nodejs и es6.Подскажите, пожалуйста, где я ошибся.и, пожалуйста, скажите мне, это правильный способ определения классов.

import mongoose from '../db/db'
import bcrypt from 'bcrypt-nodejs';

let SALT_WORK_FACTOR = 10;


class UserProfile {
userProfile

constructor() {
    let userSchema = new mongoose.Schema({
        userId: {
            type: String,
            required: true
        },
        email: {
            type: String,
            unique: true,
            index: true,
            lowercase: true,
            required: [true, 'email field is Required']
        },
        password: {
            type: String,
            required: [true, 'password field is Required'],
            validate: [function (v) {
                return v.length >= 8;
            }, 'Password min length is 8 chars']
        },
        created: {
            type: Date,
            default: Date.now
        },

        aliasesCount: {
            type: Number,
            default: 0
        }
    });

    userSchema.pre((next) => {
       console.log('here')
        let user = this;
        console.log(user);
        if (!user.isModified('password'))
            return next();

        bcrypt.genSalt(SALT_WORK_FACTOR, function (err, salt) {
            if (err)
                return next(err);
            bcrypt.hash(user.password, salt, null, function (err, hash) {
                if (err)
                    return next(err);

                user.password = hash;
                next();
            });
        });
    })

    this.userProfile = mongoose.model('User', userSchema);
}

}


export default new UserProfile().userProfile

Но prehook не вызывает, а также не работает уникальная электронная почта.Я использую облако атласа Монго.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...