Средний стек |как запланировать действие коллекции mongodb - PullRequest
0 голосов
/ 20 октября 2019

это мой первый вопрос здесь!

Я работаю над проектом Mean

это моя коллекция

{
"created":"2019-10-7T10:57:29.579Z",
"client_name":"zuzu",
"client_phone":537486255,
"client_create":"2019-10-16T00:00:00.000Z",
"client_net_operators":"partner",
"client_package":"80gb",
"client_monthly_pay":29,
"client_balance":100,
"client_sim_number":241413244314134,
"__v":0,"_id":"5dac49d32517a19b84cb2a66"}

Я хочу, чтобы действие на стороне сервера (nodejs) начиналось с client_create каждый месяц (2019-10-16) это значит следующее 2019-11-16

client_balance(100) - client_monthly_pay (29)
and update client_balace t (71) 

Я надеюсь, что объяснил себя хорошо!

спасибо, Рефаат

Ответы [ 2 ]

0 голосов
/ 20 октября 2019

Вы можете использовать модуль узла Расписание узла для планирования, читайте об этом здесь

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

используйте его так:

let schedule = require("node-schedule");

//get the date from DB, (i leave to you)
var d = new Date(date_from_DB);
var date = d.getDate();
var month = d.getMonth();
var hour = d.getHours();
var minutes = d.getMinutes();

var scheduledDateString = '* ' + minute + ' ' + hour + ' ' + day + ' ' + '* *';
/*
  let's say the date is 20 th Oct 2019, 18:10:00, then scheduledDateString will be
  '* 10 18 20 * *' which says, run this cron job (explaining from right to left) 
  any sec, 10 minutes after 6 pm, on 20th of each month, on any day.
*/

let clientCreateTimeStamp = date_from_DB.getTime();
let currentTimeStamp = new Date().getTime();
let diff = clientCreateTimeStamp - currentTimeStamp; //(assuming date_from_DB is always a future date)

//this will start cron job after diff secs, and will run on paricular date every month as explained above
var myCronJob = schedule.scheduleJob({start: diff, rule: scheduledDateString}, function(){

    // call your function from here

});

здесь, scheduledDateString = '* ' + minute + ' ' + hour + ' ' + day + ' ' + '* *'; - это cron-формат

Формат cron состоит из:

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    │
│    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── month (1 - 12)
│    │    │    └────────── day of month (1 - 31)
│    │    └─────────────── hour (0 - 23)
│    └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
0 голосов
/ 20 октября 2019

Попробуйте установить задания CRON, определенные в вашей операционной системе.

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