통합구현 #1 - CRUD

김형우·2022년 3월 14일
0

mongoose + vue.js

목록 보기
2/15

1. 회원가입

  • insert
  1. member Schema 가져오기
    : models/member.js
    : Schema = entity
    : var Member = require('../models/member');

  2. 암호는 HASH사용
    : const hashPw = crypto.createHmac('sha256', req.body.id,).update(req.body.pw).digest('hex');
    1-1. sha256 => 알고리즘 이름
    1-2. req.body.id => 고유값
    1-3. .update(req.body.pw) => HASH 할 값
    1-4. .digest('hex') => 16진수로 변환

  3. 빈 member 객체 생성
    : var member = new Member();

  4. 추가할 값을 body로 받았기 때문에 body에서 꺼내서 입력
    : 단, 암호는 HASH한 hashPw를 사용

  5. 2.에서 생성한 빈 객체에 정보를 담았기 때문에 그 객체를 통째로 추가함.
    : const result = await member.save();
    : .save();

// 1. import = member Schema 가져오기
var Member = require('../models/member');

// { "_id" : "aa", "name" : "aa", "password" : "aa", "email" : "a@a.com", "age" : 23 }
router.post('/insert', async function(req, res, next) {
    try {
        // HASH 사용
        // sha256 => 알고리즘 이름
        // req.body.id => 고유값
        // .digest('hex') => 16진수로 변환
        // 단방향, salt값이 있어도 복원안됨
        // 똑같이 hash시켜서 비교해야함
        // => salt값 (키값, 첨가물)
        const hashPw = crypto.createHmac('sha256', req.body.id,).update(req.body.pw).digest('hex');

        // 빈 member 객체 생성
        var member = new Member();
        // member._id = req.body.id;        
        member['_id'] = req.body.id;        
        member.name = req.body.name;        
        member.password = hashPw;        
        member.email = req.body.email;        
        member.age = Number(req.body.age);        
        // member.regdate = new Date;
        
        const result = await member.save();
        console.log("/insert/result ===> ",result);
        if (result._id != '') {
            return res.send({status:200});            
        }
        return res.send({status:0});
    } catch (e) {
        console.error(e);
        return res.send({status:-1});
    }
});

2. 회원목록조회

  • select
  1. find(); 사용
    : 전체 조회기때문,
    : 컬렉션명은 models/member.js에 명시되어있다.
  2. .sort({regdate : -1}) 정렬
    : 등록일을 기준으로 내림차순
// 127.0.0.1:3000/member/select
router.get('/select', async function(req, res, next) {
    try {
        const result = await Member.find().sort({regdate : -1});
        return res.send({status : 200, result : result});
    } catch (e) {
        console.error(e);
        return res.send({status : -1});
    }
});

3. 삭제

  • delete1
  1. deleteOne();을 사용하고 조건은 _id로 한다.
// 127.0.0.1:3000/member/delete
router.delete('/delete1', async function(req, res, next) {
    try {
        const result = await Member.deleteOne({_id:req.body._id});
        console.log("/delete1/result ===> ",result);
        if (result.deletedCount === 1) {
            return res.send({status:200});            
        }
        return res.send({status:0});
    } catch (e) {
        console.error("e ====================>",e);
        return res.send({status:-1});
    }
});

4. 수정

  • update
  1. 기존데이터를 읽음
    : findOne();
    : const member = await Member.findOne({_id:req.body._id});

  2. 항목변경(이름, 나이)
    : member.name = req.body.name;
    : member.age = Number(req.body.age);

  3. 저장하기
    : save();
    : 아이디값이 동일하기때문에 수정으로 처리됨
    : const result = await member.save();

// 127.0.0.1:3000/member/update1
// { "_id" : "aa", "name" : "ww", "age" : 23 }
router.put('/update1', async function(req, res, next) {
    try {
        // 기존데이터를 읽음
        const member = await Member.findOne({_id:req.body._id});
        // console.log("member ===> ",member);

        // 변경할 항목(이름, 나이)
        member.name = req.body.name;
        member.age = Number(req.body.age);

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

0개의 댓글