코드를 비동기로 실행하고 싶어요
조회수 305회
안녕하세요
데이터베이스에서 데이터를 찾아서 담아주고, json 형태로 응답을 하고 싶은데
데이터를 찾아서 담기도 전에 json응답이 실행 되는데 어디에await 을 사용하면 데이터를 찾고나서 응답을 할까요?
중간에 map 함수때문에 너무 어렵네요 ㅜ
원래는 함수로 만들지 않고 바로 사용 했는데 await은 함수 앞에 사용한다고해서 따로 만들어 줬습니다. 도와주세요..
응답을 하고 나서 데이터는 잘 찾아집니다.. 어떻게 변형 하면 될까요?
// 게시물 조회
router.get("/", async (req, res) => {
const datas = await Post.findAll(
{ order: [["createdAt", "DESC"]] }
);
function findLike() {
datas.map(async (e) => {
const likeCount = await Like.findAll({ where: { postId: e.postId } });
e.likes = likeCount.length;
});
}
function response() {
res.json({
data: datas.map((e) => {
return {
postId: e.postId,
userId: e.userId,
nickname: e.nickname,
title: e.title,
createdAt: e.createdAt,
updatedAt: e.updatedAt,
likes: e.likes,
};
}),
});
}
await findLike();
await response();
});
1 답변
-
// 게시물 조회 router.get("/", async (req, res) => { const datas = await Post.findAll( { order: [["createdAt", "DESC"]] } ); datas.map(async (e) => { const likeCount = await Like.findAll({ where: { postId: e.postId } }); e.likes = likeCount.length; res.json({ data: datas.map((e) => { return { postId: e.postId, userId: e.userId, nickname: e.nickname, title: e.title, createdAt: e.createdAt, updatedAt: e.updatedAt, likes: e.likes, } }) }); }); });
댓글 입력