Meteor 带有compex对象的被动模板

Meteor 带有compex对象的被动模板,meteor,Meteor,我想基于此文档呈现一个反应式模板: Sprint: WorkStories: Tasks 我知道这可以通过为每个“级别”创建Meteor集合来实现,但这意味着结果实际上是作为单独的文档存储在数据库中。我想知道是否有可能为Sprint创建一个集合/文档,其中包含工作区的标准集合,每个工作区都有一个任务的标准集合,并呈现到反应式模板中 我已经看过[Meteor.deps.Context][1],但我不知道如何连接它(或者即使它是正确的工具),而且没有一个示例能做这样的事情

我想基于此文档呈现一个反应式模板:

Sprint: 
    WorkStories:
        Tasks
我知道这可以通过为每个“级别”创建Meteor集合来实现,但这意味着结果实际上是作为单独的文档存储在数据库中。我想知道是否有可能为
Sprint
创建一个集合/文档,其中包含
工作区的标准集合
,每个工作区都有一个
任务的标准集合
,并呈现到反应式模板中

我已经看过[Meteor.deps.Context][1],但我不知道如何连接它(或者即使它是正确的工具),而且没有一个示例能做这样的事情

我也看到了[这个问题][2],但他似乎在询问如何连接相关但独立的文档,而不是呈现单个文档。

因为在客户机上,下面将呈现一个
Sprint
文档,其中嵌套
工作区
在模板中嵌套了任务:

HTML:

用答案更新

根据@Paul Young下面的评论,我使用
$set
的问题是更新中缺少引号。一旦嵌套对象在
模板中呈现后,从Meteor 0.5.3开始,您可以简单地更新子数组:

Sprints.update(Sprints.findOne()._id, { $set: { "WorkStories.0.name": "updated_name1" } });
背景信息

这确实会加载初始对象,但更新似乎有问题。我可以通过在控制台中调用以下命令来重新加载模板:

Sprints.update(Sprints.findOne()._id, { name: 'sprint777', WorkStories: [{ name: 'workStory1232', Tasks: [{ name: 'task221' }, { name: 'task2' }, { name: 'task3' }] }, { name: 'workStory2', Tasks: [{ name: 'task1' }, { name: 'task2' }, { name: 'task3' }] }] })
根据以下规则:

但是,如果修饰符不包含任何$运算符,那么它将被解释为文本文档,并完全替换数据库中以前的内容。(已验证的更新当前不支持文本文档修饰符

当然,您需要在嵌套文档上使用
$set
样式运算符,并在其嵌套属性更改时使模板重新呈现,而不必替换表中的整个文档。包括搜索子数组的功能:

允许查询特定数组元素(foo.1.bar)。

我尝试了
子数组搜索,但还无法更新原始实体的
工作区
子文档,因此我在google talk中进行了搜索


希望这有帮助

这不起作用。它将加载初始对象,但是如果我对
工作区
集合进行更改,它不会反映在模板中。你说得对,我已经更新了我的问题并发布在meteor google组中。我刚刚尝试了你的示例,这似乎有效:
sprint.update(sprint.findOne()。_id,{$set:{“WorkStories.0.name”:“updated_name1”})
注意引号的位置
Sprints.update(Sprints.findOne()._id, { $set: { "WorkStories.0.name": "updated_name1" } });
Sprints.update(Sprints.findOne()._id, { name: 'sprint777', WorkStories: [{ name: 'workStory1232', Tasks: [{ name: 'task221' }, { name: 'task2' }, { name: 'task3' }] }, { name: 'workStory2', Tasks: [{ name: 'task1' }, { name: 'task2' }, { name: 'task3' }] }] })