2016-06-20 3 views
0

Ich versuche, ein Objekt 'Single Post' innerhalb eines Objekts 'Beiträge' aus einer JSON-Datei innerhalb Meteor, die aussieht wie zu holen Dies.Meteor: Unterstrich _findWoher Iteration durch Loop-Objekte funktioniert nur in Chrome-Konsole, in der App sagt undefined

enter image description here

fand ich einen effektiven Weg, es zu tun, mit Findwhere unterstreichen, um es zu bekommen. Dies ist der Code

_.findWhere(_.findWhere(CategoryCollection.find().fetch(), 
{"_id":"CategoryPublication-5"}).posts,{"ID":46}); 

aber wenn ich dies in Meteor setzen, ich bin

dies ist der Code, den ich verwendet

Template.CategoryArticleSingle.helpers({ 
      articles: function() { 
      var id = FlowRouter.getParam('ID') 
      var category = FlowRouter.getParam('category') 
      console.log(CategoryCollection.find().fetch()); 
       let match = _.findWhere(_.findWhere(CategoryCollection.find().fetch(), {"_id":category}).posts,{"ID": id}); 
      console.log("match",id,category,match); 
      return match; 
      } 
     }); 

undefined bekommen Warum bin ich

undefined bekommen aktualisieren.

wäre das korrekt? Ich habe die 47 ID mit nur ID ersetzt, so dass ich sie für jede Verbindung verwenden kann.

Im bekommen "Kategorie" ist schreibgeschützt.

Template.CategoryArticleSingle.helpers({ 
      articles: function() { 
      var id = FlowRouter.getParam('ID') 
      var category = FlowRouter.getParam('category') 
      console.log(CategoryCollection.find().fetch()); 
      const category = CategoryCollection.find().fetch().find(c => c._id === id); 
      let post = null; 

      if (category) { 
       post = category.posts.find(p => p.ID === id); 
      } 
      console.log("post",id,category,post); 
      return post; 
      } 
     }); 

Antwort

0

Es gibt keine Notwendigkeit lodash/Strich des findWhere zu verwenden. Diese Funktionalität ist in ES2015 integriert. Außerdem können Sie den Code in ein paar Zeilen aufteilen, um ihn lesbarer zu machen.

const category = CategoryCollection.find().fetch().find(c => c._id === 'CategoryPublication-5'); 
let post = null; 

if (category) { 
    post = category.posts.find(p => p.ID === 47); 
} 
+0

hi @ffxsam danke für Ihre Antwort. Bitte schauen Sie sich den aktualisierten Code in der Post an und beraten Sie. Ich bin mir nicht sicher, ob ich es richtig gemacht habe. –

+0

geben mehr Kontext. Dieses Array hat drei Ebenen dazu. Bitte werfen Sie einen Blick auf meine vorherige Frage, um Ihnen Kontext zu geben .. Ihre Hilfe wird geschätzt http://stackoverflow.com/questions/37902133/meteor-there-is-no-route-for -the-path-error-how-to-access-Einzelartikel-withi/37902963? noredirect = 1 # comment63271715_37902963 –

Verwandte Themen