Nano Hash - криптовалюты, майнинг, программирование

Метеор, параметры динамической подписки

Я пытаюсь подписаться на список пользовательских команд, включая дополнительную динамическую команду. Идентификатор последнего передается параметром в подписку, вот так:

MeteorObservable.subscribe('user.teams', extraTeamId).subscribe(() => {
    this.findUserTeams();
});

Переменная extraTeamId постоянно меняется в моем сервисном компоненте, и мне нужно иметь эту динамическую команду в моей клиентской коллекции каждый раз, когда эта переменная изменяется.

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

Если Метеор не должен был так работать, есть ли другие хорошие варианты?

Я также использую Angular2 для этого.


  • Найдите раздел Reactive Changes по этой ссылке, я думаю, это будет соответствовать вашим потребностям 23.01.2017
  • Спасибо за это, я не видел эту реализацию раньше, но мне понравилось! Может быть, я попробую более простой вариант этого. 24.01.2017

Ответы:


1

Если вы хотите получить новое значение, вам нужно отписаться от последней подписки и снова подписаться на новые значения. вы можете сделать это так в угловом 2 метеоре.

на стороне сервера опубликовать

   if (Meteor.isServer) {
     Meteor.publish('user.teams', function(option : string) {
                console.log(option);   // you will get your dynamic param value in option
                return findUserTeams.find({"team": option});  // apply your query here
        });
     }

и на стороне клиента вы можете сделать что-то вроде этого.

     userteamdata: Observable < any[] > ;
     userteamSub: Subscription;

      this.userteamSub = MeteorObservable.subscribe('user.teams', extraTeamId).subscribe(() => {
    this.userteamdata = findUserTeam.find({}).zone();
  });

теперь, когда ваше значение extraTeamId изменяется, вы можете обнаружить это изменение и сделать что-то вроде этого

valuechangefunction(){

    if (this.userteamSub) {
            this.userteamSub.unsubscribe();
          }
      this.userteamSub = MeteorObservable.subscribe('user.teams', extraTeamId).subscribe(() => {
            this.userteamdata = findUserTeam.find({}).zone();
          });
}

Я надеюсь, это поможет :)

23.01.2017
  • Это хорошо, я пытался этого избежать (отписаться и снова подписаться), но думаю, что это будет необходимо. Я думаю об использовании 2 подписок, одной с группами пользователей (их может быть много), и поддерживать эту подписку. Этот способ предотвратит накладные расходы на удаление и повторную отправку данных коллекции клиенту. А другая подписка будет только для дополнительной команды, эта будет отписываться и переподписываться каждый раз, когда она меняется. Что вы думаете? 24.01.2017
  • @HenriqueRotava Я думаю, что есть еще одно решение вашей проблемы, вместо двух подписок вы можете добавить всю свою команду в один массив, а при изменении добавить динамический идентификатор также в этот массив и искать все, используя запрос $in mongdb. опубликовать все команды со стороны сервера. вот ссылка на запрос mondb, который вам понадобится. stackoverflow.com/questions/8145523/ . 24.01.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..