在集合中保存一个值并使用Meteor找到它

时间:2013-11-19 14:22:27

标签: meteor server-side serverside-javascript

Values = new Meteor.Collection("values");

if (Meteor.isServer) {
  Meteor.startup(function () {
    Meteor.setInterval(function() {
      Values.insert({id: Math.random(), name: "value"});
      console.log(Values.find({name: "value"}).id);
    }, 1000);
  });
}

我有那个代码,我正在尝试每秒向Values添加一个值,并找到我拥有的所有值并每秒打印它们。但是,它没有找到我添加的值并正在输出:

I2043-14:21:56.895(0)? undefined

1 个答案:

答案 0 :(得分:1)

find返回一个光标,这是一个包含搜索结果的对象(有点像结果数组)。它是这样做的,因为find可以获得的不仅仅是一个结果,具体取决于您传递的选择器。

它有一个类似于JS的forEach接受一个函数,并接收文档,索引和游标作为参数。

Values.find({name: "value"}).forEach(function(doc,index,cursor){
  console.log(doc.id);
});

在视觉上,find的结果看起来像是:

[
  {id: SOME_RANDOM_NUMBER, name: "value"},
  {id: SOME_RANDOM_NUMBER, name: "value"},
  {id: SOME_RANDOM_NUMBER, name: "value"},
  {id: SOME_RANDOM_NUMBER, name: "value"},
]