본문 바로가기
카테고리 없음

TIL (2023/09/12) Tuesday

by 0to1ton 2023. 9. 12.
  • 게시글, 코멘트Id, likeId 함께 나오게 출력하기
 
router.get('/', async (req, res, next) => {
  try {
    const posts = await prisma.posts.findMany({
      orderBy: {
        createdAt: 'desc',
      },
      select: {
        postId: true,
        UserId: true,
        User: {
          select: {
            nickname: true,
          },
        },
        Like: {
          select: {
            likeId: true,
          },
        },
        Comment: {
          select: {
            commentId: true,
          },
        },
        title: true,
        createdAt: true,
        updatedAt: true,
      },
    });



{
	"posts": [
		{
			"postId": "27689747-08c5-4906-a541-8213144648b4",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T09:20:56.695Z",
			"updatedAt": "2023-09-12T09:20:56.695Z"
		},
		{
			"0": {
				"commentId": "0ae21f60-51bd-48a8-acf3-b43328f87244"
			},
			"1": {
				"commentId": "1602566c-f459-4428-9c90-b1ed66097cce"
			},
			"2": {
				"commentId": "24e9b1eb-eab1-4dde-8fa4-0310af305341"
			},
			"3": {
				"commentId": "8a3e26e1-0819-4a0e-83a3-910bb70ea887"
			},
			"4": {
				"commentId": "a9413ebc-cf66-4783-a5fe-5d8a2c23da60"
			},
			"5": {
				"commentId": "cdc9f8b0-70c8-4999-8404-eafc2fc3a34d"
			},
			"postId": "8f65e962-f3ef-417b-ba72-3b3d0b81c8db",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "수정된 안녕하세요2",
			"createdAt": "2023-09-12T08:46:36.972Z",
			"updatedAt": "2023-09-12T09:21:13.045Z"
		},
		{
			"0": {
				"likeId": "ee6a2fdf-e901-49de-8aff-f617f6eeacd8"
			},
			"postId": "6eb8377c-c0c3-4cc4-b4b6-5513e9f6d6db",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:36.824Z",
			"updatedAt": "2023-09-12T08:46:36.824Z"
		},
		{
			"postId": "8561a7fb-2e07-40cb-9037-2f3ecfd5e4fd",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:36.663Z",
			"updatedAt": "2023-09-12T08:46:36.663Z"
		},
		{
			"postId": "1aee3562-a2ae-46d0-9eb0-4cc1bdb780a8",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:36.492Z",
			"updatedAt": "2023-09-12T08:46:36.492Z"
		},
		{
			"postId": "7980811b-0bfa-4657-bcf0-068dffb3f565",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:36.408Z",
			"updatedAt": "2023-09-12T08:46:36.408Z"
		},
		{
			"postId": "b9dcc589-158d-4877-93e3-d2f1f71a08a2",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:35.728Z",
			"updatedAt": "2023-09-12T08:46:35.728Z"
		},
		{
			"postId": "d0f72b2d-acdd-44b0-ae1b-66f4b8fdcb31",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:31:20.211Z",
			"updatedAt": "2023-09-12T08:31:20.211Z"
		}
	]
}
 

 

/*  전체 게시물 목록 조회 Logic */
router.get('/', async (req, res, next) => {
  try {
    const posts = await prisma.posts.findMany({
      orderBy: {
        createdAt: 'desc',
      },
      select: {
        postId: true,
        UserId: true,
        User: {
          select: {
            nickname: true,
          },
        },
        _count: {
          select: {
            Comment: true,
            Like: true,
          },
        },
        // Like: {
        //   select: {
        //     likeId: true,
        //   },
        // },
        // Comment: {
        //   select: {
        //     commentId: true,
        //   },
        // },
        title: true,
        createdAt: true,
        updatedAt: true,
      },
    });

    res.status(200).json({ posts: posts.map((post) => parseModelToFlatObject(post)) });
  } catch (error) {
    console.error(error);
    next(error);
  }
});

{
	"posts": [
		{
			"postId": "27689747-08c5-4906-a541-8213144648b4",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T09:20:56.695Z",
			"updatedAt": "2023-09-12T09:20:56.695Z",
			"Comment": 0,
			"Like": 0
		},
		{
			"postId": "8f65e962-f3ef-417b-ba72-3b3d0b81c8db",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "수정된 안녕하세요2",
			"createdAt": "2023-09-12T08:46:36.972Z",
			"updatedAt": "2023-09-12T09:21:13.045Z",
			"Comment": 6,
			"Like": 1
		},
		{
			"postId": "6eb8377c-c0c3-4cc4-b4b6-5513e9f6d6db",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:36.824Z",
			"updatedAt": "2023-09-12T08:46:36.824Z",
			"Comment": 0,
			"Like": 1
		},
		{
			"postId": "8561a7fb-2e07-40cb-9037-2f3ecfd5e4fd",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:36.663Z",
			"updatedAt": "2023-09-12T08:46:36.663Z",
			"Comment": 0,
			"Like": 0
		},
		{
			"postId": "1aee3562-a2ae-46d0-9eb0-4cc1bdb780a8",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:36.492Z",
			"updatedAt": "2023-09-12T08:46:36.492Z",
			"Comment": 0,
			"Like": 0
		},
		{
			"postId": "7980811b-0bfa-4657-bcf0-068dffb3f565",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:36.408Z",
			"updatedAt": "2023-09-12T08:46:36.408Z",
			"Comment": 0,
			"Like": 0
		},
		{
			"postId": "b9dcc589-158d-4877-93e3-d2f1f71a08a2",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:35.728Z",
			"updatedAt": "2023-09-12T08:46:35.728Z",
			"Comment": 0,
			"Like": 0
		},
		{
			"postId": "d0f72b2d-acdd-44b0-ae1b-66f4b8fdcb31",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:31:20.211Z",
			"updatedAt": "2023-09-12T08:31:20.211Z",
			"Comment": 0,
			"Like": 0
		}
	]
}

 

 

  • posts 안에서 내림차순으로 정리
/*  전체 게시물 목록 조회 Logic */
router.get('/', async (req, res, next) => {
  try {
    const posts = await prisma.posts.findMany({
      select: {
        postId: true,
        UserId: true,
        User: {
          select: {
            nickname: true,
          },
        },
        _count: {
          select: {
            Comment: true,
            Like: true,
          },
        },
        title: true,
        createdAt: true,
        updatedAt: true,
      },
    });

    // 내림차순으로 정렬
    posts.sort((a, b) => {
      return b._count.Like - a._count.Like;
    });

    res.status(200).json({ posts: posts.map((post) => parseModelToFlatObject(post)) });
  } catch (error) {
    console.error(error);
    next(error);
  }
});


{
	"posts": [
		{
			"postId": "8f65e962-f3ef-417b-ba72-3b3d0b81c8db",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "수정된 안녕하세요2",
			"createdAt": "2023-09-12T08:46:36.972Z",
			"updatedAt": "2023-09-12T09:21:13.045Z",
			"Comment": 6,
			"Like": 2
		},
		{
			"postId": "1aee3562-a2ae-46d0-9eb0-4cc1bdb780a8",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:36.492Z",
			"updatedAt": "2023-09-12T08:46:36.492Z",
			"Comment": 0,
			"Like": 1
		},
		{
			"postId": "6eb8377c-c0c3-4cc4-b4b6-5513e9f6d6db",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:36.824Z",
			"updatedAt": "2023-09-12T08:46:36.824Z",
			"Comment": 0,
			"Like": 1
		},
		{
			"postId": "27689747-08c5-4906-a541-8213144648b4",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T09:20:56.695Z",
			"updatedAt": "2023-09-12T09:20:56.695Z",
			"Comment": 0,
			"Like": 0
		},
		{
			"postId": "7980811b-0bfa-4657-bcf0-068dffb3f565",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:36.408Z",
			"updatedAt": "2023-09-12T08:46:36.408Z",
			"Comment": 0,
			"Like": 0
		},
		{
			"postId": "8561a7fb-2e07-40cb-9037-2f3ecfd5e4fd",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:36.663Z",
			"updatedAt": "2023-09-12T08:46:36.663Z",
			"Comment": 0,
			"Like": 0
		},
		{
			"postId": "b9dcc589-158d-4877-93e3-d2f1f71a08a2",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:46:35.728Z",
			"updatedAt": "2023-09-12T08:46:35.728Z",
			"Comment": 0,
			"Like": 0
		},
		{
			"postId": "d0f72b2d-acdd-44b0-ae1b-66f4b8fdcb31",
			"UserId": "262c9e5f-2d82-4286-8ccc-c45cbfdec786",
			"nickname": "Developer1",
			"title": "안녕하세요 게시글 제목입니다.",
			"createdAt": "2023-09-12T08:31:20.211Z",
			"updatedAt": "2023-09-12T08:31:20.211Z",
			"Comment": 0,
			"Like": 0
		}
	]
}

 

내일 목표

- error handling

- lv5 - OOP 완료

- swagger