23.01.16 TIL (Day14)

신경연·2023년 1월 18일
0

TIL

목록 보기
9/9

처음에 이 프로젝트의 목적을 잠시 망각하고, 자신이 좋아요를 한 그룹이 상단에 노출 되도록 하는 코드를 만들었었다.
id 값이 일치하는 것만 앞으로 뺄 방법을 생각하다가 두개로 나눠서 합치는 쪽으로 생각했다.

	group_list = list(db.idol_groups.find({}, {'_id': False}))
	
    result_list = []
    left = []
    right = []

    for i in group_list:
        num = i["group_num"]
        if like_list is not None:
            if num in like_list["group_num"]:
                left.append(i)
            else:
                right.append(i)
        else:
            result_list.append(i)

    if len(result_list) == 0:
        result_list = left + right

여기서는 좋아요 한 그룹이 없을 때의 예외 처리가 되어있지만,
javascript 쪽에서 예외처리가 안되어 있어서 좋아요를 모두 풀면 갑자기 화면에 정보들이 노출이 안되는 현상이 생겼었다.

if (like_list["group_num"].includes(group_num)) {
	like_text = "💖 " + like
    like_id = "like_down(" + group_num + ")"
} else {
   	like_text = "❤ " + like
    like_id = "like_up(" + group_num + ")"
}

like_list가 null이라 includes를 쓰면 오류가 났던 것이다.

	if (like_list == null || !like_list["group_num"].includes(group_num)) {
        like_text = "❤ " + like
        like_id = "like_up(" + group_num + ")"
    } else {
        like_text = "💖 " + like
        like_id = "like_down(" + group_num + ")"
    }

like_list의 null 체크를 먼저 해주게끔 수정해주었다.

그리고 python 쪽에서도 원래의 기능의 의도에 맞게끔 수정 해주었다.
좋아요 순 정렬만 해주면 되었다.

group_list2 = list(db.idol_groups.find({}, {'_id': False}).sort("like", -1))

기능이 간단하기에 코드가 훨씬 간결해졌다.

profile
반갑습니다

0개의 댓글