是否有任何流星包来实现自定义用户收集的用户状态?

is there any meteor package to implement user status for custom user collection?

是否有任何流星包来实现自定义用户集合的用户状态而不是默认用户状态。我实现了 "myUser" 集合而不是默认的 "meteor.user" 集合,我想向它添加状态字段?

您可以在服务器端向用户对象的根添加任何字段,只要确保您在客户端订阅了像这样的发布

/* eslint-disable prefer-arrow-callback */
import { Meteor } from 'meteor/meteor';

Meteor.publish('userExtraFields', function userExtraFields() {
  if (this.userId) {
    return Meteor.users.find(
      { _id: this.userId },
      { fields: { currentTeamId: 1, teams: 1, isAdmin: 1, isCreator: 1 } }
    );
  }
  return false;
});

如果您有自定义集合,只需在服务器端执行此操作:

export const myUser = new Mongo.Collection('myUser');

const userData = (userId) => {
  return myUser.find(userId);
}

您现在将拥有一个对象,其中包含可在服务器端访问的所有用户字段。要添加状态字段,在客户端只需对用户执行的每个功能执行 Meteor.call。 (点击一个事件,提交到数据库等)

Meteor.methods({
  'userOnline'(userId) {
     myUser.update({_id:userId},{$set:{onlineDate:new Date()}})
  }
}

Meteor.call('userOnline', userId);

然后查询您的数据库以了解您想要的超时时间。最后 n 秒、分钟、小时。

query = {
    onlineDate: { // 18 minutes ago (from now)
        $gt: new Date(ISODate().getTime() - 1000 * 60 * 18)
    }
}