Parse 백엔드가있는 Node/Express에 "Yelp for Dorm rooms"웹 응용 프로그램을 다시 작성합니다 (PHP 버전 here).중첩 포인터로 쿼리 하시겠습니까?
나는 매우 SQL 데이터베이스에 사용하고 있기 때문에, 나는 네 테이블로 내 데이터를 조직 한 일대 포인터 : 모든 객실은 홀에 대한 포인터를 가지고
Rooms
Halls
Clusters
Campuses
각 홀에 대한 포인터를 가지고 (작은 그룹의 홀)과 각 클러스터에는 캠퍼스에 대한 포인터가 있습니다.
그러나 각 홀/클러스터/캠퍼스에는 고유 한 문화가 있기 때문에 각 수준별로 검색 할 수 있기를 원합니다 (예 : 사우스 캠퍼스 또는 Norris Hall에서 살고 싶음). 그러나 포인터가 세 단계 깊숙이 중첩되어 있기 때문에 캠퍼스를 검색하고 방을 반환하는 데 문제가 있습니다. 나는 데이터를 복제하고 클러스터 및 캠퍼스 데이터를 각 룸 객체에 복사/붙여 넣기해야합니다.
클러스터를 쉽게 검색 할 수 있습니다. 난 그냥 할 수 있습니다
var clusterQuery = new Parse.Query("clusters");
clusterQuery.equalTo("cluster", req.params.cluster);
var hallsQuery = new Parse.Query("halls");
hallsQuery.matchesQuery("cluster", clusterQuery);
query.matchesQuery("hall", hallsQuery);
그래서 나는 캠퍼스 검색은 단순히
var campusQuery = new Parse.Query("campuses");
campusQuery.equalTo("cluster", req.params.campus);
var clusterQuery = new Parse.Query("clusters");
clusterQuery.matchesQuery("campus", campusQuery);
var hallsQuery = new Parse.Query("halls");
hallsQuery.matchesQuery("cluster", clusterQuery);
query.matchesQuery("hall", hallsQuery);
그러나 물론, 즉 너무 쉽게 될 것이다하고 생각.
대신 오류가 발생합니다. 154 : 쿼리에 너무 많은 중첩 쿼리가 있습니다.
내 질문에, 전능하신 stackoverflow 커뮤니티 : 대신 무엇을해야합니까?
그건 잘 될거야. 무리 감사. –
그냥 'matchesQuery ('ancestors ', innerQuery)'를 사용하여'ancestors '요소 중 하나가 하위 쿼리 (예 :'Campus '의 이름 검색)와 일치하는 회의실을 필터링 할 수 있습니다. –