2017-04-30 9 views
1

私のコードでは、書籍に関する情報を格納するコレクションにアクセスしようとしています。私は各書籍のIDだけを格納する配列をループしています。それから私は、各書籍テンプレートヘルパーから複数回アクセスできるように、JSONドキュメントをどこに保存できますか?

Template.myBorrows.helpers({ 
    storeInSession:function(ilendbooksId) { 
    console.log("storeInSession is called"); 
    var currentBorrowBook = Books.findOne({_id: ilendbooksId}); 
    Session.setAuth('currentBorrowBook' , currentBorrowBook); 
    }, 

    getAuthor: function() { 
    var currentBorrowBook = Session.get('currentBorrowBook'); 
    return currentBorrowBook.ItemAttributes[0].Author[0]; 
    }, 
}); 

私は本コレクション内の書籍の_idによるブック文書を照会していますための完全な情報を格納するブックと呼ばれるコレクションから本を照会し、そのIDを使用しています。それから私はそれをセッションに保存してから、適切なメソッドを呼び出して情報を取得します。唯一の問題は、書籍の配列でこれを行う必要があることです。そのため、セッションの前の文書が上書きされ、ページ上のすべてのデータが最新のセッション文書に変更されるたびに、各書籍のドキュメントをどこにどこに保存し、最新のセッションドキュメントに更新せずに正しい情報が表示されるようにすることができますか?

+0

あなたは人生を不必要に複雑にしています。メテオの火災ベースのチュートリアルをやったことがありますか?ヘルパーでセッション変数を設定しないでください。代わりにイベントハンドラで行います。コレクションのコレクションをループしている場合は、それぞれを呼び出す必要はなく、ヘルパーを必要とせずにテンプレート内の各ブックのプロパティに直接アクセスすることもできます。 –

+0

申し訳ありませんが、私はより明確にすべきでした。もし私が各本についての十分な情報を保存しているコレクションをループしていたら、はい、私はそれぞれのプロパティにアクセスすることができます。実際には、各書籍のIDだけを格納する配列をループしています。次に、その書籍を検索するためにそのIDを使用して、各書籍の完全な情報を保存しているBooksというコレクションから検索します。 – Zorrow2008

答えて

0

あなたのコメントに答えるには、文書_idの配列があり、テンプレートで文書を取得したいとします。

HTML:

<template name="myTemplate"> 
{{#each array}} 
    {{#with doc}} 
    Author: {{author}} 
    {{/with}} 
{{/each}} 
</template> 

JS:{{#each array}}ループthis内部

Template.myTemplate.helpers({ 
    array(){ return theArrayOfIdsThatYouveDefined; }, 
    doc(){ return Books.findOne(this); } 
}); 

が配列の要素であろう。 docヘルパーはBooksコレクションから本を探して返します。今すぐ{{#with doc}}ブロックの中でデータコンテキストはブックオブジェクトになります。

セッション変数またはメソッド呼び出しは必要ありません。

関連する問題