Есть ли какой-нибудь пакет метеора для реализации пользовательского статуса для пользовательской коллекции? - PullRequest
0 голосов
/ 31 мая 2018

есть ли какой-нибудь пакет метеора для реализации пользовательского статуса для пользовательской коллекции пользователей, а не по умолчанию.я реализую коллекцию "myUser" вместо коллекции по умолчанию "meteor.user" и хочу добавить в нее поле статуса?

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Если у вас есть пользовательская коллекция, просто сделайте это на стороне сервера:

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)
    }
}
0 голосов
/ 31 мая 2018

Вы можете добавить любые поля в корень пользовательского объекта на стороне сервера, просто убедитесь, что вы подписаны на публикацию на стороне клиента, как эта

/* 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;
});
...