728x90
SMALL
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의 - 인프런 | 학습 페이지
지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....
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
'Node.js' 카테고리의 다른 글
User.findOne is not a function (0) | 2022.03.13 |
---|---|
[출석부 만들기] mongoose 연결하고 mongoDB compass에서 확인하기 (0) | 2022.02.21 |
백, 프론트 서버 동시 실행 시 한쪽을 무시해요 (0) | 2022.02.15 |
TypeError: "x" is not a constructor (0) | 2022.02.13 |
[Node.js] node-sqlite DB에서 여러 row를 반환하는 쿼리 (0) | 2022.01.28 |