개인과제(게시판,댓글CRUD구현)
[내일배움캠프] 개인 과제 게시판/댓글 CRUD기능 구현하기-C/R-
김민커
2023. 6. 16. 18:02
router.post("/posts", async (req, res) => {
//body에서 데이터 받음//
const { title, content, user, password } = req.body;
//작성 시간 설정//
const day = new Date();
//중복 아이디 확인 있다면 else로 없다면 if 구문//
const existsUser = await Post.find({ user });
if (existsUser.length === 0) {
//데이터를 작성했는지 확인//
if (title) {
//데이터를 작성했는지 확인//
if (content) {
//데이터를 작성했는지 확인//
if (user) {
//데이터를 작성했는지 확인//
if (password) {
await Post.create({ title, content, user, password, day });
res.json({ message: "게시판을 생성하였습니다." })
} else { return res.status(400).json({ message: "데이터형식을 확인해주세요" }) }
} else { return res.status(400).json({ message: "데이터형식을 확인해주세요" }) }
} else { return res.status(400).json({ message: "데이터형식을 확인해주세요" }) }
} else { return res.status(400).json({ message: "데이터형식을 확인해주세요" }) }
} else { return res.status(400).json({ message: "이미 존재하는 user입니다." }) }
}
);
routes/posts.js의 게시판 생성 코드다.
req.body로 필요한 input정보를 받는다.
게시판을 생성하는 과정에서 생기는 오류와 버그 마다 하드코딩을 했다.
좀 더 코드에 익숙해지면 간략화 해야할 부분은 if문인 것 같다.
각각의 조건은 user가 존재하는 id인지,
req.body로 받는 데이터가 제대로 작성이 되어 있는지의 부분이다.
//db의 게시글 전체 목록 불러오기//
router.get("/posts", async (req, res) => {
const posts = await Post.find({})
//db의 게시글 데이터 중 표출 데이터 선정//
const postList = posts.map((post) => {
//db의 오브젝트 아이디를 문자열로 변환//
postId = String(post._id)
return {
"postId": postId,
"title": post.title,
"user": post.user,
"day": post.day,
}
})
res.send({ postList });
});
routes/posts.js의 게시글 목록 조회 코드다.
게시글 전체를 조회하기 위한 코드이기 때문에 const posts = await Post.find({})에 조건이 없다.
기본적으로 mongodb에 저장된 데이터는 각각의 고유한 id가 부여된다. 그 아이디를 통해서 각각의 게시글을 특정해야하기 때문에 postId = String(post._id) 따로 id를 위한 키를 만들었고 문자열화 했다.
router.get("/posts/:id", async (req, res) => {
//id의 파라미터 설정//
id = req.params.id;
//id가 같은 데이터를 서치//
const [existsPost] = await Post.find({ _id: Object(id) });
//id와 같은 데이터가 없다면 else로 있다면 if구문//
if ([existsPost].length) {
const searchReslut = [existsPost].map((search) => {
return {
"postId": id,
"title": search.title,
"content": search.content,
"user": search.user,
"day": search.day
}
})
res.json({ searchReslut });
} else { return res.status(400).json({ message: "데이터형식을 확인해주세요" }) }
});
routes/posts.js의 특정 게시글 목록 조회 코드다.
api의 주소가 /:id로 되어 있다.
id = req.params.id; 이것을 통해서 /:id주소에 할당되어 있는 id파라미터를 가져온다.
const [existsPost] = await Post.find({ _id: Object(id) }); api의 주소화 저장된 오브젝트 id가 같은게 있는지 찾는다.
만약에 있다면 그것에 해당하는 데이터를 reurn한다.