방법을 찾기위해 검색하며 여러가지 글을 읽어본 결과, 처음에 entity를 작성할 때 뭔가 어설프게 만들었고 그 부분에서 join + where이 적용되지 않는다는 결론이 나왔습니다. 이를 올바르게 동작시키려면 entity부터 다시 작성해야할 것 같다는 생각이 들었습니다.
아직 앞으로 구현해야 할 기능들이 많기 때문에 우선 전체 게시글 데이터를 불러온 다음 하나씩 원하는 stack을 모두 가지고 있는지에 대해 검사하는 방법으로 검색 기능을 작성하였습니다. 다행히 검색 기능이 원하는대로 작동되긴 하는데 지금 코드보다 더 효율적인 방법이 있을 것 같다는 생각이 들었습니다. 나중에라도 계획한 기능들을 모두 구현 완료한 후에 시간이 남으면 천천히 여기 부분을 분석+수정&보완하는 방향으로 가고싶습니다.
let filterResult = [];
for (let idx = 0; idx < allBoards.length; idx++) {
let requireStack = allBoards[idx].stacks.map(el => el.name);
let isRight = true;
for (let chk = 0; chk < searchStacksList.length; chk++) {
// stack이 해당 게시글에 포함되어있는지 확인
if (!requireStack.includes(searchStacksList[chk])) {
isRight = false;
break;
}
}
if (isRight) {
const obj = { ...allBoards[idx], requireStack };
filterResult.push(obj);
}
}