mongodb - 我如何从 Meteor 中不同集合中的特定字段返回值?

标签 mongodb meteor

我已经购买了 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}} block 来遍历应用程序集合中的文档

{{#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 字段时,我想匹配 computers 集合中的文档,然后返回计算机的名称而不是 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;
  }
});

我显然在这里遗漏了一些东西,但我似乎无法理解它是什么。

如果可能的话,我会更喜欢一个能告诉我我做错了什么的答案,而不是一个关于如何修复它的复制和粘贴解决方案。我似乎无法理解这一点,如果有任何建议我应该复习哪些编程理论,我将不胜感激。

感谢阅读! 彼得

最佳答案

您的帮助程序代码应该使用 findOne() 而不是 find() 函数。 find() 返回具有返回数组的函数 fetch() 的 coursor。 findOne() 返回一个文档。

Template.appItem.helpers({
  computerName: function() {
    var comp = Computers.findOne(this.computerId, {fields: {name: 1} });
    return comp.name;
  }
});

这是一种在 Meteor 中处理连接的方法。我找到了更好的方法:http://meteor.hromnik.com/blog/joins-in-meteorjs-and-mongodb

关于mongodb - 我如何从 Meteor 中不同集合中的特定字段返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29646286/

相关文章:

javascript - 将用户数据传递到 meteor 模板时无法读取未定义错误的属性

mongodb - MongoDB 中的性能扩展(搜索操作)?

MongoDB Stitch 返回数据作为 $NumberDouble 而不是数字本身

node.js - 迭代 mongoDB 集合,对每个项目执行异步聚合任务,完成后在 Response 中返回 JSON

mongodb - 检查mongo文档字段是否存在

javascript - Meteor 忘记密码和发送重置密码电子邮件数据流

javascript - meteor 自动表单的简单验证码字段类型

javascript - 控制台日志记录以使用react?

java - Spring Integration 轮询多个服务器上的入站 channel 适配器

c# - 使用 c# Mongodb 驱动程序查询和投影嵌套数组