반응형
1. 개요
- 내가 쓴 글만 수정, 삭제할 수 있게 변경
2. 코드
(1) 글 작성할때 작성자 정보 저장하는 코드
// POST요청을 처리하는 소스
app.post("/add", function (req, res) {
res.send("전송완료");
console.log(req.body.title);
console.log(req.body.date);
// HTML에서 제목과 날짜 불러와서 변수에 저장
var title = req.body.title;
var date = req.body.date;
// user의 id를 불러와서 변수에 저장
var user = req.user._id;
// counter라는 collection에서 데이터 가져오는 코드
// 게시물갯수 라는 이름의 데이터를 찾아서 가져옴
db.collection("counter").findOne(
{ name: "게시물갯수" },
function (에러, 결과) {
console.log(결과.totalPost);
var 총게시물갯수 = 결과.totalPost;
// DB에 저장할 내용을 변수에 저장
var 저장할거 = {
_id: 총게시물갯수 + 1,
제목: title,
날짜: date,
작성자: user,
};
// 몽고db atlas에 post라는 collection도 만들었었음
// db에 데이터 저장하는 코드임
// 데이터 양식은 {키 : 밸류} 형태임
// _id는 데이터의 인덱스값 같은거 적어주는거임
db.collection("post").insertOne(저장할거, function (에러, 결과) {
console.log("저장완료");
// db의 값을 업데이트(수정)하는 코드
// updateOne({수정할데이터},{$set : {수정값}},function(){})
// $set이 update operator(연산자)임, 값을 바꿔줌
// 연산자에는 $inc도 있음 이건 값을 더해줌
db.collection("counter").updateOne(
{ name: "게시물갯수" },
{ $inc: { totalPost: 1 } },
function (에러, 결과) {
if (에러) {
return console.log(에러);
}
}
);
});
}
);
});
- /add URL로 get요청하는 코드에다가 추가합시다
- 게시글을 저장할 때 작성자도 저장하는데
- login collection에서 작성자의 _id를 가져와서 저장함
- 근데 이거 저장하려면 /add 코드의 순서가 회원가입 코드보다 뒤에 있어야 함
- 없는걸 가져올 순 없잖음
(2) 작성자만 게시글 삭제할 수 있는 코드
// 삭제 요청
app.delete("/delete", function (req, res) {
console.log(req.body);
req.body._id = parseInt(req.body._id);
// 글번호와 작성자 정보를 확인 후 삭제하도록 변수 설정
var 삭제할데이터 = { _id: req.body._id, 작성자: req.user._id };
db.collection("post").deleteOne(삭제할데이터, function (에러, 결과) {
console.log("삭제 완료");
if (에러) {
console.log(에러);
}
// 성공 시 200번(성공) 응답 보냄
// 실패 시 400번(실패) 응답 보냄
// send 옵션으로 메시지도 보낼 수 있음
res.status(200).send({ message: "성공했습니다" });
//res.status(400).send({message: '실패했습니다'});
});
});
// /detail/:id로 요청 오면 처리 가능
app.get("/detail/:id", function (요청, 응답) {
// DB에서 {_id : ??/}인 게시물을 찾음
// 요청.params.pages는 해당값의 게시물을 찾으라는 뜻
db.collection("post").findOne(
{ _id: parseInt(요청.params.id) },
function (에러, 결과) {
console.log(결과);
// data라는 변수에 DB에서 찾은 데이터를 집어넣음
응답.render("detail.ejs", { data: 결과 });
}
);
});
- 얘도 순서 뒤로 밀어줘야 함
- 삭제할데이터 라는 변수에 게시글번호와 작성자정보를 넣어서
- DB에 삭제요청할때 해당 정보를 비교해서 삭제 요청 함
반응형
'코딩 > NodeJS' 카테고리의 다른 글
nodejs로 이미지 업로드 기능 만들기 (0) | 2023.02.05 |
---|---|
nodejs에서 routes폴더 이용해서 라우터 관리하기 (0) | 2023.02.04 |
nodejs랑 mongodb에서 검색 기능 최적화하기(2) (0) | 2023.02.02 |
nodejs랑 mongodb에서 검색 기능 최적화하기(1) (0) | 2023.02.01 |
nodejs랑 mongodb로 검색 기능 만들기 (0) | 2023.01.31 |