meteor - 通过 meteor 存在获得大量在线用户

标签 meteor

是否可以简单地用 meteor-presence 显示在线用户数(当前登录) ?
我看到 Meteor.presences 集合中的文档默认情况下不会删除自身,因此简单的 Meteor.presences.find().count() 不是我想要的值寻找...我应该手动删除它们还是应该检查每个文档是否有 userID 字段?

编辑:
为了更多地说明发生在我身上的事情,我尝试在 2 个不同的浏览器中使用 2 个不同的用户登录。调用 Meteor.presences 后,我可以在我的集合中看到两个文档,例如

docs: {
  djF3noxe3AhxDRfZw: {
    _id: "djF3noxe3AhxDRfZw",
    state: "online",
    userId: "SDeLPJzoabFt4Knei"
  }, {
  t4r2Q7KGKji4FPS9s: {
    _id: "t4r2Q7KGKji4FPS9s",
    state: "online",
    userId: "5zvYoC37aXSADGNEg"
  }
}

闲置几分钟后,两个文档看起来都一样。与一名用户注销(调用 Meteor.logout())后,我仍然有 2 个文档(即使在几分钟后),唯一的区别是其中一个不再有 userID:

docs: {
  djF3noxe3AhxDRfZw: {
    _id: "djF3noxe3AhxDRfZw",
    state: "online"
  }, {
  t4r2Q7KGKji4FPS9s: {
    _id: "t4r2Q7KGKji4FPS9s",
    state: "online",
    userId: "5zvYoC37aXSADGNEg"
  }
}

仅在关闭该浏览器窗口后,关联的文档才会自行删除。
因此,如果我在两个窗口都打开时调用 Meteor.presences.find().count() ,我总是会得到 2 作为返回,无论用户在线/离线状态。

我目前使用的所有代码都是示例中的代码:

Meteor.publish('userPresence', function() {
  var filter = {}; 
  return Meteor.presences.find(filter, {fields: {state: true, userId: true}});
});

最佳答案

我也看到了同样的事情,这也让我感到困惑。但仔细想想,查看页面的访问者也是存在的,但没有 userId。因此,任何参观者都会出现在收藏中,这是有道理的。

如果您只想查看登录的用户,您可以将过滤器更改为

var filter = {userId: {$exists: true}};

关于meteor - 通过 meteor 存在获得大量在线用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16399666/

相关文章:

javascript - Meteor + React 如何设置很多输入元素的值并在之后修改它们

ios - 如何防止加载 meteor.local(使用 phonegap 构建 ios 应用程序时)

node.js - 有没有一种简单的方法可以将 express 应用程序转换为 meteor?

javascript - 如何使用 CollectionFS 和 graphicsmagick 创建一个填充 meteor 中特定区域的缩略图

javascript - meteor (0.9.0.1) : Issue assigning admin role using a roles package

javascript - Meteor 与 JQuery 或一般动画的交互

meteor - 扩展 Meteor loginWithPassword 方法

MongoDB:拥有一个大集合更好,还是拥有许多带有连接的较小集合更好?

html - 来自 fontello 的图标字体不适用于 Meteor js

javascript - 异步 Meteor.call 的 Mocha 测试