[MongoDB] 몽구스 스키마 설계, password 암호화, 저장
728x90
SMALL

https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%A9%B0-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%85%B8%EB%93%9C-%EB%A6%AC%EC%95%A1%ED%8A%B8-%EA%B8%B0%EB%B3%B8/lecture/37072?tab=curriculum 

 

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의 - 인프런 | 학습 페이지

지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....

www.inflearn.com

위의 강의를 듣고 작성하였습니다.

 

 

 

User.js

const mongoose = require('mongoose');

const userSchema = mongoose.Schema({
    name: {
        type: String,
        maxlength: 50
    },
    email: {
        type: String,
        trim: true,
        unique: 1
    },
    password: {
        type: String,
        minlength: 5
    },

로 내가 설계하고 싶은 스키마를 작성한다.

 

npm install bcrypt --save

bcrypt 설치 후

const bcrypt = require('bcrypt');

register에 save를 하기전에 평문인 비밀번호를 암호화하는 코드를 작성한다.

 

 

userSchema.pre('save', function (next) { 
    let user = this;
    if (user.isModified('password')) { // 비밀번호가 변경될때만 암호화
        // 비밀번호 암호화
        bcrypt.genSalt(saltRounds, function (err, salt) {
            if (err) return next(err)
            bcrypt.hash(user.password, salt, function (err, hash) { // hash = 암호화된 Pw
                if (err) return next(err)
                user.password = hash;
                next()
            })

        })
    } else {
        next()
    }
}) // 저장하기 전 실행

 

 

 

index.js

User 스키마를 require로 가져온다.

const { User } = require('./models/User');

app.post('/register', (req, res) => {
    const user = new User(req.body);  
    user.save((err, userInfo) => {
        if (err) return res.json({ success: false, err });
        return res.status(200).json({
            success: true
        })
    });
})

User 스키마에 req.body를 넣어 user라는 인스턴스로 만든다.

해당 인스턴스의 .save 메서드를 사용하여 저장할 수 있다.

 

 

728x90
LIST