【发布时间】:2015-04-15 17:59:56
【问题描述】:
我已经购买了 Discover Meteor 书籍并完成了教程。我仍然不确定一些部分,并且遇到了我无法工作的问题。
我有两个系列。
Computers = new Mongo.Collection('computers');
Apps = new Mongo.Collection("apps");
在我发布的服务器上:
Meteor.publish('computers', function() {
return Computers.find();
});
Meteor.publish('apps', function() {
return Apps.find();
});
关于使用 Iron Router 订阅的客户端:
Router.configure({
waitOn: function() {
return [Meteor.subscribe('computers'),
Meteor.subscribe('apps'),
Meteor.subscribe('users')];
}
});
在一个集合中,我使用另一个集合中另一个文档的 id 引用了一个文档。
Computers.insert({
_id: sd9f9sdf699,
name: 'Mac1'
});
Apps.insert({
_id: ewf4y34349f,
name: 'App One',
version: '1.0',
computerId: sd9f9sdf699
});
然后我使用 {{#each}} 块来遍历应用程序集合中的文档
{{#each apps}}
{{> appItem}}
{{/each}
<template name="appItem">
<tr>
<td><input type="checkbox" name="checked" class="ui checkbox"></td>
<td>{{name}}</td>
<td>{{version}}</td>
<td>{{computerName}}</td>
</tr>
</template>
当我到达 computerId 字段时,我想匹配计算机集合中的文档,然后返回计算机的名称而不是 id。
这是我的 app_item.js 代码:
Template.appItem.helpers({
computerName: function() {
var id = this.computerId;
var compName = Computers.find({_id: id}, {fields: {name: 1} }).fetch();
return compName;
}
});
我显然在这里遗漏了一些东西,但我似乎无法理解它是什么。
如果可能的话,我希望得到一个能告诉我我做错了什么的答案,而不是复制和粘贴解决方案的方法。我似乎无法理解这一点,如果我应该复习什么编程理论,我将不胜感激。
感谢阅读! 彼得
【问题讨论】: