2

大雑把な質問で申し訳ありませんが、流星、モンゴ、ハンドルバーの組み合わせを使用するためのベスト プラクティスが何であるかはわかりません。

ハンドルバーをロジックレスにすることのポイントを理解しており、ジェイドの方が快適だったかもしれませんが、ネイティブのメテオサポートのためにハンドルバーを維持しました. ただし、データをテンプレートに割り当てる最良の方法が何であるかはよくわかりません。

これは特に、複数のコレクションにアクセスする必要があり、別のコレクション内の別のドキュメントによって (Id によって) 参照されているドキュメントにアクセスする必要がある場合や、通常は for ループから提供されるインデックス変数を使用する必要がある場合に当てはまります。Meteor の自動更新機能を維持すると、問題が少し複雑になるようです。

は、質問の形で推測します:

複雑なクエリを作成し、それらすべてを単一のオブジェクト配列に結合して (すべての相対データがネストされるように)、それぞれにインデックス変数を追加し、配列をテンプレートでループできるようにする必要がありますか?

-また-

各テンプレートのコントローラーで各 db クエリを作成し、データを最も単純な形式に分解して、複数のデータ セットをテンプレートに送信する必要がありますか?

私を正しい方向に導くことができるあらゆる種類の答えに本当に感謝しています。

4

1 に答える 1

4

2番目のオプションをお勧めします。反応性とうまく連携するおそらく最も簡単な方法は次のとおりです。

ArticlesCommentsおよびMeteor.usersコレクションが予測可能な方法で関連付けられているブログがあるとします。つまり、 commenthasarticleIdおよびuserIdフィールドです。またarticlecomment両方のcontentフィールドを持つようにします。次のテンプレートで表示できます。

<template name="article">
    {{#with article}}
        {{content}}
        {{#each comments}}
            {{content}} - {{username}}
        {{/each}}
    {{/with}}
</template>

これで、次のようにデータを取得できます。

Template.article.article = function() {
    return Articles.findOne(...articleId...);
};

Template.article.comments = function() {
    return Comments.find({articleId: this._id});
};

Template.article.username = function() {
    var user = Meteor.users.find(this.userId);
    return user ? user.username : '';
};
于 2013-08-21T18:51:34.443 に答える