member Schema 가져오기
: models/member.js
: Schema = entity
: var Member = require('../models/member');
암호는 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진수로 변환
빈 member 객체 생성
: var member = new Member();
추가할 값을 body로 받았기 때문에 body에서 꺼내서 입력
: 단, 암호는 HASH한 hashPw를 사용
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});
}
});
find();
사용.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});
}
});
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});
}
});
기존데이터를 읽음
: findOne();
: const member = await Member.findOne({_id:req.body._id});
항목변경(이름, 나이)
: member.name = req.body.name;
: member.age = Number(req.body.age);
저장하기
: 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});
}
});