2016-08-16 4 views
0

iは、ポスト内のIDとして来る者は、そこにあるオブジェクトを、カテゴリ内の2つのコレクションコレクションAのアイテムのIDで参照されるコレクションBのアイテムのフィールドを表示するにはどうすればよいですか?

CategoryCollection = new Mongo.Collection("CategoryCollection"); 
usersWordpressCollection = new Mongo.Collection("usersWordpressCollection"); 

CategoryCollectionホールドポストを持っています。下の画像を見て、posts.authorにあなたの注意を引く

enter image description here

usersWordpressCollectionはそのID著者を保持している(下の画像を参照)posts.author

下categoryCollectionで参照されています私はポストを表示するとき

enter image description here

、そのので、私はトンを得ることができますcategoryCollectionから来ます彼はそれがこれに来るときしかし、私は、返さないIDが、usersWordpressCollection

最新のhtmlで見つかっ参照著者の情報が欲しい、私はまた、著者IDを取得することができ、リンクなどを投稿

<template name="latest"> 

    <ul> 
     {{#each articles}} 
     <li class=" home-latest "> 
      <span class="label"> <a class="" href="/catsingle/CategorySingle/{{_id}}">{{name}}</a></span> 
     {{#each posts}} 
      <div class="card"> 
      <div class="category-img">{{{image}}}</div> 
      <div class="card-divider"> 
      {{title}} 
      </div> 
      <div class="card-section"> 
      <p> 
      {{> authors}} 
      </p> 
      </div> 
      </div> 

     </li> 
     {{/each}} 
    </ul> 
</template> 

最新のjs

HTML

Template.latest.helpers({ 
    articles: function() { 
    var id = FlowRouter.getParam('_id'); 
    return CategoryCollection.find({}, {sort: {date_created: -1}, limit:1}).fetch(); 
    } 
}); 

著者の

<template name="authors"> {{#each authors}} <p> {{name}} </p> {{/each}} </template> 

著者のJS

Template.authors.helpers({ 
    authors: function() { 
    var id = this.author; 
console.log(id); 
var alias = usersWordpressCollection.findOne(id, {fields: {name: 1} }); 
return alias.name; 
console.log(alias.name); 
}); 

あなたが見ることができるように、this.authorcategoryCollectionposts.authorで見つかった著者IDです。私はidの投稿者と一致するusersWordpressCollectionを見つけようとしていますが、idが一致した投稿者のname fieldを表示したいと思います。しかし、私はそれが動作するように見えない、どのように私はこれを達成することができます。

答えて

0

投稿ごとに作成者が1人しかないので、作成者のカーソル上を反復する必要はありません。あなたは1人必要です。だから、持っている場所:

{{#each authors}} 
    <p> 
    {{name}} 
    </p> 
{{/each}} 

を代わりに使用します。あなたが{{#each posts}}内にあるので、今

{{#with author}} 
    <p> 
    {{name}} 
    </p> 
{{/with}} 

は、 authorsテンプレートに入ってくるデータコンテキストが( post対象となりますが、それゆえ構築することができます authorヘルパーは次のように:

Template.authors.helpers({ 
    author(){ 
    return usersWordpressCollection.findOne({ id: parseInt(this.author) }); 
    } 
}); 

あなたはthis.authorがあることが示されたのであなたのユーザコレクションのidが整数である場合、タイプを変換する必要があります。これはクエリで直接行うことができます。

+0

こんにちは@Michel、私はそれが働くように見えない、私は、これは影響を与えるだろうか? 'this.author'は整数である' id'にマッチさせようとしている文字列です。 1つは文字列、もう1つは整数、 –

+0

次に 'id = parseInt(this.author)'を実行し、それを検索します。 –

+0

私の知らないことは申し訳なく思っています。私は 'parseInt'が' this.author'を整数にしていることを理解していますが、 'id'は私が設定しなければならない変数ですか?コードはどこに行くの? @Michel –

関連する問題