流星 - 无法访问所有读取操作

时间:2014-11-29 21:12:27

标签: mongodb meteor

我是Meteor的新手。我有一段时间以来一直坚持这个问题。我可以成功地将项目添加到集合中并在控制台中完整地查看它们。但是,我无法访问.js文件中的所有读取操作。

也就是说,我可以将.find()和.findOne()与空参数一起使用。但是当我尝试添加.sort或参数时,我收到一个错误,告诉我该对象未定义。

已启用自动发布,因此我不确定问题所在。这些电话是直接在客户端进行的。

这会返回一些内容 -

Template.showcards.events({
  "click .play-card": function () {
    alert(Rounds.find());
   }
})

这不会返回任何内容 -

Template.showcards.events({
  "click .play-card": function () {
    alert(Rounds.find().sort({player1: -1}));
   }
})

抱歉新手问题。提前谢谢。

2 个答案:

答案 0 :(得分:0)

Meteor的集合API与mongo shell的API有点不同,这对于新用户来说是可以理解的。你需要这样做:

Template.showcards.events({
  'click .play-card': function() {
    var sortedCards = Rounds.find({}, {sort: {player1: -1}}).fetch();
    console.log(sortedCards);
  }
});

有关详细信息,请参阅this。另请注意,记录光标(查找结果)可能并不是您想要的。如果要查看文档的内容,则需要fetch

答案 1 :(得分:0)

Rounds.find().sort({player1: -1})返回一个光标,因此您需要执行此操作:

Rounds.find().sort({player1: -1}).fetch();

请注意,这会返回Array个文档对象。所以你会做更像这样的事情:

docs = Rounds.find().sort({player1: -1}).fetch();
alert(docs[0]);