2

我为粗略起草的问题道歉,但我不确定使用流星、蒙戈和车把组合的最佳实践是什么。

我理解让车把变得无逻辑的意义,虽然我在 Jade 中会更舒服,但我仍然使用车把来支持原生流星。但是,我真的不知道将数据分配给模板的最佳方法可能是什么。

这尤其是在我需要访问多个集合并访问由另一个集合中的另一个文档(按 Id)引用的文档的情况下,或者在我需要使用通常从 for 循环提供的索引变量的情况下。保留 Meteor 的自动更新功能似乎给这件事增加了一点复杂性。

我想,以问题的形式:

我是否应该进行复杂的查询,将它们全部连接到一个对象数组中(以便所有相关数据都嵌套),为每个对象添加一个索引变量,并使该数组可用于在模板中循环?

-或者-

我是否应该在每个模板的控制器中进行每个数据库查询,然后尝试将数据分解为最简单的形式并将多组数据发送到模板?

我真的很感激任何可以引导我走向正确方向的答案。

4

1 回答 1

4

我建议第二种选择。可能最简单的方法,与反应性很好,如下所示。

假设您有一个博客,其中包含Articles,CommentsMeteor.users集合,它们以可预测的方式相关 - 即commenthasarticleIduserIdfields。让也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 回答