처음에 이 프로젝트의 목적을 잠시 망각하고, 자신이 좋아요를 한 그룹이 상단에 노출 되도록 하는 코드를 만들었었다.
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))
기능이 간단하기에 코드가 훨씬 간결해졌다.