2016-11-18 4 views
1

提供された特定の時間にmongodbコレクションのデータを削除または変更できるかどうか疑問に思っていました。Cron jobs in Meteor

一日の終わりに削除/更新する必要のある些細なデータと考えてください。 私を方向に向ける。

+1

https://atmospherejs.com/percolate/synced-cron –

+0

@Michel Meteorですぐに本を読んでください。私たちは真剣にそれを楽しみにしています、あなたは知識の海です。 –

+0

多くの義務付けられた@アンクルソニ! –

答えて

2

流星にcronジョブを行うには、2つの良いオプションがあります、軽量ご利用の場合は簡単で、あなたは高速を必要とする場合

が、私の経験から解決方法meteor-synced-cronは大丈夫です。あなたの仕事がより複雑な場合は、仕事にもっとコントロールする必要があります。jobs-collection

+0

助けてくれてありがとうmeteor-synced-cronは私のためにそれをしました。 –

0

流星では、cronのような標準的なノードパッケージは流星の苦情として正しく働かず、Fibersを使うメッセージが表示されます。簡単な日常的な作業のために、Meteor.setTimeout()を直接使用する関数を作成しました。この方法でMeteor環境を利用できるようにして、毎日のdbクリーンアップを行うことができます。

「cron」ジョブを起動するスケジュールのためだけにノードパッケージを使用します。 yourDailyCleanupは、呼び出す関数の名前で置き換えることができます。

import { Meteor } from 'meteor/meteor'; 
    import later from 'later'; 

    function scheduleTimeout(sched, fn) { 
     const nowMilli = Date.now(); 
     const next = later.schedule(sched).next(1,nowMilli+1001); 
     console.log('next schedule',next); 
     const diffMile = next.getTime() - nowMilli; 

     Meteor.setTimeout(function() { 
     scheduleTimeout(sched,fn); 
     fn(); 
     } , diffMile); 
    } 

    Meteor.startup(function() { 
     console.log('Startup'); 
     later.date.localTime(); 
//  scheduleTimeout(later.parse.recur().every(2).minute(), function() { console.log('test job');}); 
     scheduleTimeout(later.parse.recur().on('23:00:00').time(), yourDailyCleanup); 
    }); 

コードは、あなたがより多くの機能を必要とするときにも使用できるパッケージpercolatestudio:meteor-synced-cronに基づいています。