基本的meteor用户订阅不会计算客户端服务器

时间:2014-02-26 16:43:32

标签: javascript mongodb meteor

我一直在搞乱流星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希望这有助于某人。

1 个答案:

答案 0 :(得分:2)

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

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

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

应显示正确的用户数。