level1 과제를 하면서 오늘 혜훤님께 코드 중에서 중복해서 들어가는 코드 부분이 있어서 이 부분 기록 !
기존에 작성한 코드
/** 게시글 작성 API
* - 제목, 작성자명, 비밀번호, 작성 내용을 입력하기
*/
router.post('/posts', async (req, res, next) => {
const { user, password, title, content, createdAt } = req.body;
const posts = await Posts.find({ user }).exec();
if (posts.length) {
return res
.status(400)
.json({ message: '데이터 형식이 올바르지 않습니다.' });
}
const createdPosts = await Posts.create({
user,
password,
title,
content,
createdAt,
});
await createdPosts.save();
return res.status(201).json({ message: '게시글을 생성하였습니다.' });
});
routes/posts.js
기존 코드는 위와 같이 게시글 작성 API를 만들었는데, 여기서 잘못 작성한 부분이 있다.
const { user, password, title, content} = req.body;
const createdPosts = await Posts.create({
user,
password,
title,
content,
});
이렇게 수정한 뒤
/** 게시글 작성 API
* - 제목, 작성자명, 비밀번호, 작성 내용을 입력하기
*/
router.post('/posts', async (req, res, next) => {
const { user, password, title, content} = req.body;
const posts = await Posts.find({ user }).exec();
if (posts.length) {
return res
.status(400)
.json({ message: '데이터 형식이 올바르지 않습니다.' });
}
const createdPosts = await Posts.create({
user,
password,
title,
content,
});
return res.status(201).json({ message: '게시글을 생성하였습니다.' });
});
이런식으로 코드를 좀 더 간결하고 필요 없는 부분은 제외해서 정리할 수 있었다.
참고로 schema는 이렇게 작성했다.
// /schemas/post.js (스키마 파일)
const postSchema = new mongoose.Schema({
// ...
createdAt: {
type: Date,
required: false,
default: Date.now, // 클라이언트에서 값을 받지 않으면 기본적으로 현재 날짜로 설정
},
});
export default mongoose.model('Posts', postSchema);
나는 createdAt을 스키마에서 default 속성을 사용해서 createdAt필드를 현재 날짜로 자동 설정해두었고
혜훤님의 코드는
// /schemas/post.js (스키마 파일)
createAt: {
type: Date,
default: Date.now(),
required: false,
},
});
//게시글 생성
router.post("/", async (req, res) => {
//클라이언트에게 전달받은 데이터를 변수에 저장합니다.
try {
const validation = await createPostSchema.validateAsync(req.body);
const { user, password, title, content } = validation;
const post = new Post({ user, password, title, content });
await post.save();
return res.status(201).json({ message: "게시글을 생성하였습니다." });
} catch (err) {
return res
.status(400)
.json({ message: "데이터 형식이 올바르지 않습니다." });
}
});
이렇게 작성해서 어떤 부분이 필요하고 다른지 비교가 가능하다.
오늘은 level1 페어리뷰를 하고 level2 과제를 위한 숙련주차 1주차 강의를 듣는 중!! 얼른 듣고 과제하고 싶다!