在Meteor中,简单的Collection.find()。fetch()返回一个空数组

时间:2015-07-01 06:26:22

标签: mongodb meteor

这是我的代码。有谁能帮助我知道为什么rekt在运行时的值是一个空数组?在我的meteor上,find()。fetch()只返回一个空数组。有没有人对这种事情有任何经验。

PlayersList = new Mongo.Collection('players');
rekt = PlayersList.find().fetch();
console.log(rekt);

ids = new Object();
sorted = new Object();
oldq = new Object;
try
{
rs1 = {name : "Sam"};
PlayersList.update(rs1 , {$set: {name : "Sam" , score : 100}} , {upsert:true});

console.log(resultset);
}catch(e)
{}

function selectscore(cutoff)
{
  var oldq = PlayersList.find().fetch();
  for(var a in oldq)
  {
    elm = oldq[a];
    if(elm.score<=cutoff)
    {
    sorted[elm.name] = elm.score;      
    }

  }    
 return sorted;
 }

if (Meteor.isClient) {
  oldq = PlayersList.find().fetch();

  for(var a in oldq)
  {
    elm = oldq[a];
    ids[elm.name] = elm._id;
  }
  selectscore(50);


  // counter starts at 0
  Session.setDefault('counter', 0);

  Template.hello.helpers({
    counter: function () {
      return Session.get('counter');


    }

  });

  Template.hello.events({
    'click button': function () {
      // increment the counter when button is clicked
      Session.set('counter', Session.get('counter') + 1);
    }
  });
}

if (Meteor.isServer) {
  Meteor.startup(function () {
    // code to run on server at startup
    PlayersList.update({name:"Bob"} , {$set:{name: "Mob", score: 500}});
    PlayersList.update({name:"Mob"} , {$set:{name: "Cobb", score: 5000}});
    resultset  = PlayersList.find().fetch();
    //console.log(resultset.attr(_id));
    rs = {name : "Slobb"};
    PlayersList.update({name:"Cobb"} , {$set:{name: "Slobb", score: 50000}});
    PlayersList.update( rs, {$set:{name: "Bob", score: 50}});
    newq = PlayersList.find().fetch();

  });
}

提前致谢。

2 个答案:

答案 0 :(得分:0)

您正在两次记录相同的结果。 fetch返回的数组不具有反应性。意思是,当你fetch然后插入时,数组不会改变。因此,请尝试使用console.log(resultset);替换第二个PlayersList.find().fetch();。另外,设置正确的发布/订阅功能,(如@Paul所述)。

答案 1 :(得分:0)

这里似乎存在一些问题,不允许find()。fetch()函数返回对象数组。我试过kriegs解决方案,但它也没有用。我终于使用Deps.autorun解决了这个问题。

全部谢谢