Meteor에는 일대 다 관계로 연결된 두 개의 개체 모음이 있습니다. 코스에는 장소의 _id가 포함됩니다.
다음과 같은 출판물이 있습니다.
Meteor.publish('courses', function(day_selector, price_min, price_max){
return Courses.find({
day_of_week : {$in: day_selector},
price : {$gt : price_min, $lt : price_max}});
});
적어도 하나의 코스가 선택된 장소 만 반환하는 다른 출판물을 만들고 싶습니다.
나는 발견 유성 책의 고급 출판 장을 읽었으며 코스와 함께 장소를 보낼 수있는 것 같지만 그 방법을 이해하지 못합니다.
몇 달 전에 이것을 알아내는 데 시간이 걸렸지 만 여기에 해결책이 있습니다.
Meteor.publish('courses',function(day_selector, price_min, price_max){
var coursesCursor=Courses.find({
day_of_week : {$in: day_selector},
price : {$gt : price_min, $lt : price_max}
});
var courses=coursesCursor.fetch();
var coursesPlacesIds=_.pluck(courses,"place_id");
var placesCursor=Places.find({
_id : {$in : coursesPlacesIds}
});
//
return [
coursesCursor,
placesCursor
];
});
핵심은 게시 함수에서 둘 이상의 커서를 반환 할 수 있다는 것입니다.이 미묘한 기능을 사용하면 두 컬렉션 문서를 모두 게시하는 게시 코드를 작성할 수 있습니다.
까다로운 부분은 게시 매개 변수로 필터링 된 코스 커서에서 장소의 ID를 추출하는 것입니다. 이것이 우리가 underscore.pluck을 사용하는 이유입니다 (문서 참조). 이러한 ID를 얻으면 다른 커서로 장소를 반환하는 것은 매우 간단합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다