이런일도있었어

node express react mongodb 게시판 만들기 - 유저모델 (3) 본문

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);

 

 

다음 유저 : 회원 등록, 회원로그인 만들기.