这是我的代码。有谁能帮助我知道为什么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();
});
}
提前致谢。
答案 0 :(得分:0)
您正在两次记录相同的结果。 fetch
返回的数组不具有反应性。意思是,当你fetch
然后插入时,数组不会改变。因此,请尝试使用console.log(resultset);
替换第二个PlayersList.find().fetch();
。另外,设置正确的发布/订阅功能,(如@Paul所述)。
答案 1 :(得分:0)
这里似乎存在一些问题,不允许find()。fetch()函数返回对象数组。我试过kriegs解决方案,但它也没有用。我终于使用Deps.autorun解决了这个问题。
全部谢谢