express 라우트 async, React 이벤트 핸들러 async, fetch, axios, ObjectId
express 라우트 async
1
2
3
4
5
| app.get('/', () => {
(async () => {
await ...;
})();
})
|
- 가독성이 좀 떨어져서 아예 async 함수를 밖으로 뺄 수 없나 고민
1
2
3
4
| app.get("/", async (_, res) => {
const findResult = await db.collection("cards").find().toArray();
return res.json(findResult);
});
|
- 잘 작동하나 에러가 생기면 문제가 발생한다고 함
- wrapper로 감싸고 에러를 잘 처리하는 방법과
- 따로 관련 라이브러리를 사용하는 방법이 찾아보니 있었음
- 더 자세히 공부하고 나중에 다른 포스트를 작성해야겠다
React 이벤트 핸들러 async
1
2
3
4
| const deleteHandler = async (cardId) => {
await axios.delete(`${URL}/cards/${cardId}`);
getCards();
};
|
- 서버에서와 마찬가지로 즉시실행함수 형태를 async로 감싸 사용하는 것은 가독성이 좀 떨어졌다
- 그래서 아예 이벤트 핸들러를 async 함수로 적용해도 되나 궁금했다
- 일단은 문제 없이 작동하는 것 같음
- 관련 내용을 좀 더 공부해야겠다
fetch, axios
fetch를 사용하다가 axios로 넘어갔다.
fetch
로 응답을 받을 때, res.json()
으로 한번 더 풀어줘야 하는 것이 번거로움fetch
로 요청을 전송할 때도 axios
에 비해 좀 더 작성할 것이 많음
최대한 라이브러리 없이 프로젝트를 완성하려고 했지만 fetch를 활용해본 것으로 만족한다.
ObjectId
ObjectId
를 이용해서 mongodb를 사용해야 한다.
1
| import { ObjectId } from "mongodb";
|
1
| await db.collection("cards").findOneAndDelete({ _id: new ObjectId(cardId) });
|
find
로 특정 document를 찾기 위해 new ObjectId()
를 사용
현재까지 코드 저장소
leitner-box-frontend
leitner-box-backend