这是我的代码。有人能帮我知道为什么运行时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.解决了这个问题
感谢所有