react express 게시판
node express react mongodb 게시판 만들기 - 유저모델 (3)
먼짝
2019. 6. 26. 00:22
기본적으로 express, express-validator 인스톨하고
mongodb는 lcocal에서 돌리기로 했다. atlas가 편하긴 한데 혹시라도 db 사이즈가 크게 될경우 비용부담이 아까우니깐.
password는 인크립은 bcryptjs 로 하고 로그인 토큰은 jsonwebtoken을 사용하기로 한다.
.dotnev 대신 config를 사용하기로 한다.
config 폴더에 default.json을 만들어 URL과 jwtSecret 을 입력, db.js 로 연결후 연결
기본 인덱스를 app.js라고 하지 않고 server.js로 했다.
server.js
const express = require('express');
const connectDB = require('./config/db');
const morgan = require('morgan');
const app = express();
//디비에 연결
connectDB();
//미들웨어 body-parser대신 express에서 이제 자체 해결, 모건은 상태보기 위해 나중에 삭제
app.use(morgan('dev'));
app.use(express.json({ extended: false }));
//라우팅 미들웨어
app.use('/api/user', require('./routes/user'));
// 서버 포트 처리
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`서버가 포트 ${PORT} 시작됨`);
});
[config] - default.json
{
"DATABASE": "mongodb://localhost:27017/ecomm",
"jwtSecret": "jwttokenSecret"
}
[config] - db.js
const mongoose = require('mongoose');
const config = require('config');
const db = config.get('DATABASE');
const connectDB = async () => {
try {
await mongoose.connect(db, {
useNewUrlParser: true,
useCreateIndex: true,
useFindAndModify: false
});
console.log('데이타베이스 접속완료');
} catch (err) {
console.error(err.message);
// Exit process with failure
process.exit(1);
}
};
module.exports = connectDB;
[models] - User.js
const mongoose = require('mongoose');
const UserSchema = new mongoose.Schema({
name: {
type: String,
trim: true,
required: true,
maxlength: 32
},
email: {
type: String,
trim: true,
required: true,
unique: true
},
password: {
type: String,
required: true
},
role: {
type: Number,
default: 0
}
registered: {
type: Date,
default: Date.now
}
});
module.exports = User = mongoose.model('user', UserSchema);
다음 유저 : 회원 등록, 회원로그인 만들기.