2017-02-12 1 views
3

Я написал клик. событие, которое вызывает метод. Этот метод подталкивает отдельные элементы (InfoId) в коллекцию под названием userManagement. Таким образом, эти элементы назначаются этому пользователю.Meteor - Как автоматически удалить один элемент из коллекции по истечении определенного периода времени с помощью метода на стороне сервера?

EventHandler:

Template.available.events({ 
"click .push": function(e) { 
    e.preventDefault(); 
    var InfoId = this.InfoId; 
    Meteor.call('pushInfo', InfoId); 
}, }); 

И метод:

Meteor.methods({ 
    'pushInfo': function(InfoId) { 
    if (this.userId) { 
     userManagement.update({ 
      '_id': this.userId 
     }, { 
      $push: { 
      'activeInfos': InfoId 
      } 
     } 
    ); 
    } 
    } 
}); 

Однако, теперь мне нужно автоматически удалить именно этот ранее добавленный один элемент (InfoId) от 'activeInfos' по истечении определенного периода времени е. г. три месяца.

Есть ли способ сделать это? Будем благодарны за любую помощь.

Спасибо.

ответ

2

для этого вы можете использовать cronjob просто установить его с помощью meteor add percolate:synced-cron

в хронах вам нужно сделать две вещей один, это добавить задачу в хроны, второе это начать наши хроны.

SyncedCron.add({ 
    name: 'your cron name', 
    schedule: function(parser) { 
    // parser is a later.parse object 
    return parser.text('every 2 hours'); 
    }, 
    job: function() { 
    console.log("hello"); 
    } 
}); 

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

после этого начало ваш cron. для этого добавить это

SyncedCron.start(); 

для дополнительной информации проверьте эту ссылку https://github.com/percolatestudio/meteor-synced-cron.

для графика времени читать эту http://bunkat.github.io/later/parsers.html#overview

я надеюсь, что это поможет

+0

Большое спасибо за такой подход. Я читаю и пытаюсь понять все это на GitHub прямо сейчас, чтобы реализовать Cronjob. Хотя, знаете ли вы, как я мог запустить это в рамках метода на стороне сервера? Я написал функцию userManagement.update с кодом $ pull в методе удаления одного элемента (InfoId) от пользователя. Это работает. Но я не знаю, как использовать SyncedCron.add ({...}) с этим? Или я могу просто написать SyncedCron.add ({с этой функцией $ pull)} на сервере и запустить SyncedCron.start() из щелчка. мероприятие? – Jaybruh

+0

мы используем работу cron на стороне сервера. просто введите свой код cron внутри Meteor.startup() на стороне сервера, который является своего рода основной функцией или вы можете создать отдельный файл и импортировать его в основной файл на сервере. SyncedCron запускается автоматически, когда он видит функцию start() и выполняет задание в указанное время. Это полезно в случае, если мы хотим повторить функцию после указанного времени. вы должны поместить запрос userManagement.update в функцию работы. –

+0

не забудьте пометить мой ответ правильно, щелкнув правой кнопкой мыши на мой ответ, если мой ответ помог вам как-то :) –