在我的Meteor应用程序中与.find()和.findOne()一起苦苦挣扎

时间:2014-02-08 00:34:30

标签: meteor handlebars.js

我意识到这可能与其他帖子非常接近,但我不能让这个坚持到我的脑海! :(我需要一些帮助,试图了解如何使用.find()或者我应该使用.findOne()(如此困惑)收集我的。

目标: 我希望从People集合中获取所有文档,然后为每个文档创建一个新的<option>,其中.name放入文本和集合{{ 1}}是值。


以下是一些代码:

收集来自Mongo

._id

我的模板助手:

db.people.find()
{ "_id" : "1", "name" : "John" }
{ "_id" : "2", "name" : "Mike" }
{ "_id" : "3", "name" : "George" }
{ "_id" : "4", "name" : "Jane" }

我的模板:

Template.view_Admin_Staff.people = function() {
  console.log( 'people : ', People.find() );
  return People.find();

};

在帮助程序中找到的 <select id="ddStaffID" name="staff"> <option value="">-- Select One --</option> {{#each people}} <option value="{{_id}}">{{name}}</option> {{/each}} </select> 会返回console.log。我错过了什么?

2 个答案:

答案 0 :(得分:1)

我假设你的收藏品是People = new Meteor.Collectin('people');并且html中的模板名称是

当您在模板帮助程序中执行控制台登录时,您将记录游标本身,而不是文档。您可以在(https://www.eventedmind.com/tracks/feed-archive/how-do-client-cursors-work)找到有关光标的更多信息。

要查看是否返回了正确的数据,可以在游标上使用.fetch方法。 Fetch将根据您的查询返回一个对象数组。在您的情况下,查询为空,fetch方法应返回客户端数据库中可用的所有内容。

在标题中回答您的问题。 find和findOne都是Collection对象上可用的方法。

找到返回光标。如果有与您的查询匹配的记录,findOne将返回AN对象。

答案 1 :(得分:0)

血性-h3ll!警告我们所有人n00bs ...必须订阅您的出版物才能看到并使用您的出版物。 叹息

我的初始帖子中的代码按预期工作。我只是忘了在我的客户端路线中订阅我的出版物中的曝光数据。 </foreheadSlap>我是新手,对我的查询技能提出了质疑,甚至没有对代码中的任何后续问题进行故障排除。感谢@Bozhao和@DavidWeldon的快速回复。