통합구현 2022/03/11 (exp_20220311// book,member)

무간·2022년 3월 11일

프로젝트 생성 및 구동용 프로그램 설치

CMD> npm i express-generator -g
CMD> npm i nodemon -g

// -- 벡엔드 만들기
CMD> express -e exp_20220311

CMD> cd exp_20220311

CMD> npm install => node_modules

CMD> nodemon --inspect ./bin/www => 실행 (소스코드 변경 적용됨)

// -- mongodb연동 => node_modules
// 참고 : https://github.com/Automattic/mongoose
// https://www.npmjs.com/package/mongoose
CMD> npm i --save mongoose
CMD> npm i --save mongoose-sequence
CMD> npm i --save socket.io => 실시간 처리


파일명 app.js

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

// npm i mongoose --save
var mongoose = require('mongoose');

mongoose.connect('mongodb://id219:pw219@1.234.5.158:37017/db219')
var db = mongoose.connection;
db.once('open', function(){
  console.log('mongodb 연결됨.');
})


// routes 등록
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var bookRouter = require('./routes/book');
var memberRouter = require('./routes/member');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

// url 설정
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/book', bookRouter);
app.use('/member', memberRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

파일명 models/book.js (spring의 entity와 비슷)

// npm i mongoode --save
var mongoose = require('mongoose');

// npm i --save mongoose-sequence
const AutoIncrement = require('mongoose-sequence')(mongoose);

var Schema = mongoose.Schema;

// 책코드, 책제목, 가격, 저자, 등록일
var bookSchema = new Schema({
    _id     : Number,
    title   : { type : String, default : '' },
    price   : { type : Number, default : 0  },
    author  : { type : String, default : '' },
    regdate : { type : Date , default : Date.now}
});

// 시퀀스 사용 설정
bookSchema.plugin(AutoIncrement, {id:'SEQ_BOOK8_ID', inc_field:'_id'} )

module.exports = mongoose.model('book8', bookSchema);

파일명 routes/book.js

var express = require('express');
var router = express.Router();

// book 스키마 가져오기
var Book = require('../models/book');

// 127.0.0.1:3000/book/insert
// {'title':'통합구현', 'price': 1200 , 'author':'가나다'}
router.post('/insert', async function(req, res, next) {
    try {
        // var 객체명 = new 클래스명();
        var obj = new Book();
        obj.title  = req.body.title;
        obj.price  = Number(req.body.price);
        obj.author = req.body.author;

        const result = await obj.save();
        console.log(result);
        if(result._id > 0){
            return res.json({status:200});
        }
        return res.json({status:0});

    } catch (e) {
        console.error(e);
        return res.json({stasus : -1});
    }
});

// 127.0.0.1:3000/book/select
router.get('/select', async function(req, res, next) {
    try {

        const result = await Book.find({}).sort({_id:-1});
        res.json({stasus:200, result:result});

        
    } catch (error) {
        console.error(e);
        res.json({stasus:-1});
    }
});
module.exports = router;

파일명 model/member.js (spring의 entity와 비슷)

// npm i mongoode --save
var mongoose = require('mongoose');

var Schema = mongoose.Schema;

var memberSchema = new Schema({
    _id      : { type : String, default : '' },
    name     : { type : String, default : '' },
    password : { type : String, default : '' },
    email    : { type : String, default : '' },
    age      : { type : Number, default : 0 },
    regdate  : { type : Date , default : Date.now}
});

module.exports = mongoose.model('member8', memberSchema);

파일명 routes/member.js

var express = require('express');
const member = require('../models/member');
var router = express.Router();

// member 스키마 가져오기
var Member = require('../models/member');

// 127.0.0.1:3000/member/delete
router.delete('/delete', async function(req, res, next){
    try {
        const result = await Member.deleteOne({_id : req.body._id});
        console.log(result);
        if(result.deletedCount === 1){
            return res.json({stasus:200});
        }
        return res.json({stasus:0});
    } catch (e) {
        console.error(e);
        res.json({status:-1});
    }
    
})

// 127.0.0.1:3000/member/update
// {"_id":"aaa", "name":"변경할이름", "age":130}
router.put('/update', async function(req, res, next){
    try {
        // 기존 데이터를 읽음
        const obj = await Member.findOne({_id : req.body._id});
        // console.log("변경전", obj);

        // 변경할 항목(이름, 나이)설정
        obj.name = req.body.name;
        obj.age  = Number(req.body.age);
        // console.log("변경후", obj);

        // 저장하기(아이디 값이 동일하기 때문에 수정됨.)
        const result = await obj.save();
        console.log("result", result);
        return res.json({stasus:200});
        
    } catch (e) {
        console.error(e);
        res.json({status:-1});
    }
});

// 127.0.0.1:3000/member/insert
// {"_id":"aaa", "name":"aaa", "password":"aaa", "email":"aaa@gmail.com", "age":30}
router.post('/insert', async function(req, res, next) {
    try {
        var obj = new Member();
        obj._id = req.body._id;
        obj.name = req.body.name;
        obj.password = req.body.password;
        obj.email = req.body.email;
        obj.age = Number(req.body.age);

        const result = await obj.save();
        console.log(result);
        if(result._id !== null){
            return res.json({status:200});
        }
        return res.json({status:0});       
        
    } catch (e) {
        console.error(e);
        res.json({status:-1});
    }
});

// 127.0.0.1:3000/member/select
router.get('/select', async function(req, res, next){
    try {
        const result = await Member.find({});
        res.json({stasus:200, result:result});
        
    } catch (e) {
        console.error(e);
        res.json({status:-1});
    }
});

module.exports = router;
profile
당신을 한 줄로 소개해보세요

0개의 댓글