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



这是我的代码。有人能帮我知道为什么运行时rekt的值是一个空数组吗?在我的流星上,所有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();
  });
}

提前谢谢。

您将两次记录相同的结果。fetch返回的数组没有反应。也就是说,当您fetch然后插入时,数组不会改变。因此,尝试用PlayersList.find().fetch();替换第二个console.log(resultset);。此外,设置适当的发布/订阅功能(正如@Paul所描述的)。

这里似乎存在一些问题,不允许find().fetch()函数返回对象数组。我尝试了克里格的解决方案,但效果不太好。我终于用Deps.autorun.解决了这个问题

感谢所有

最新更新