2014-02-26 48 views
1

我一直在搞流星7.1.1。 只是需要一些仔细的检查,基本的流星用户订阅不符合客户端服务器

所以基本上..

if (Meteor.isServer) { 
    console.log("Count Server No: "+ Meteor.users.find().count()); 
    Meteor.publish("directory", function() { 
    return Meteor.users.find(); 
    }); 
} 
// server side results in Count Server No: 1 

if (Meteor.isClient) { 
    Meteor.subscribe("directory"); 
    console.log("Count Client No: " + Meteor.users.find().count()); 
} 
// client returns Count Client No: 0 

我已经看到了各种教程和其他可能的途径,但似乎有不同的方法来做到这一点。如果有人可以指出。将非常感激。 PS希望这可以帮助某人。

+0

ahhh。忘了提及。计数应符合客户端到服务器的要求。 –

+0

和这个作品... Template.content.count = function(){ return Meteor.users.find()。count(); } //返回1 –

回答

2

客户端和服务器上的集合在订阅时不会立即同步,而是在后台异步。 订阅对象具有功能ready(),如果最初一批数据已发送到客户端,则返回true

此外,subscription can take callbacks during definitiononReadyonError事件。例如,仅提供onReady处理程序:

Meteor.subscribe("directory", function() { 
    alert('Count = ' + Meteor.users.find().count()); 
}); 

应显示用户的正确数目。