angularjsmongodbmeteor-helperangular-meteormeteor-publications

Join queries in meteor angular using publish composite


I have two Collections Category and Feeds.

Category

{
   "_id": "ADFGFDF",
   "title" : "title",
}

Feeds

{
   "_id": "DFSAHT",
   "feeds" : "ds sdsd sds",
   "categoryId" : "catId"
}

I need to get the result like this:

{
   "_id": "ADFGFDF",
   "title" : "title",
   "categoryId" : "DFSAHT"
   "category" : {
     "_id": "DFSAHT",
     "feeds" : "ds sdsd sds",
    }
}

I tried using publish-composite and here it's my code.

Server

Meteor.publishComposite('feedscateg', function () {

return {
  find: function () {
    return Category.find({});
  },
  children: [
    {
      find: function (cat) {
        return Feeds.find({ categoryID: cat._id });
      }
    }

  ]
}
});

In client Angular i tried this:

$scope.feeds = $meteor.collection(Category).subscribe('feedscateg');

And I am confused with the view part also.


Solution

  • publishComposite do not modify collection data, it will load Feeds and Category separately. If you want to get category of feed item just select it from client db.

    $scope.getFeedCategory = function (feedItem) {
        Category.findOne({'_id': feedItem.categoryId});
    };