Изтриване на потребителски данни на всеки 24 часа, node.js postgres

end използва express и postgres като своя DB. В момента моята схема е

.createTable('users', users => {
            users.increments();
            users.string('email').unique().notNullable();
            users.integer('total_points').defaultTo(0);

            // Everything below this needs to reset back to 0 every 24 hours

            users.integer('daily_points').defaultTo(0);
            users.integer('food').defaultTo(0);
            users.integer('sleep').defaultTo(0);
            users.integer('water').defaultTo(0);

Как мога да използвам node cron за изтриване на данни на всеки 24 часа.

cron.schedule("* * * * *", function() {   // every day at 4am = 0 4 * * *
    console.log("running a task every minute");
  });

Какво мога да предам тук вместо console.log?


person ShawnP96    schedule 25.04.2020    source източник


Отговори (1)


Използвайте модула node-schedule и напишете това във вашия сървър:

schedule = require('node-schedule');

schedule.scheduleJob('0 0 4 * * *',
  function (fireDate) {
    console.log(`fireDate: ${fireDate}`);
    console.log(`now: ${new Date()}`);
    yourRemoveFunction()
      .then(result => {
        console.log(`data removed at ${new Date()}`);
        console.log('result:\n', result);
      })
      .catch(reason => {
        console.error(`removing data failed at ${new Date()}`);
        console.error(`reason: ${reason}`);
      });
  });

Напишете функция, която изпълнява заявката за премахване на вашите целеви данни (yourRemoveFunction)

person Saeed    schedule 26.04.2020
comment
Мога ли само в моята yourRemoveFunction() return db(everything I need to delete).del() ? .. благодаря и за предишния отговор! - person ShawnP96; 26.04.2020
comment
Трябва да върне обещанието. @ShawnP96 - person Saeed; 26.04.2020
comment
да, опитах предишната си функция, но тя просто изтри целия потребител, вместо да нулира поле. Какво бих вложил в обещанието си тогава? Аз съм малко нов, също не мога да намеря никаква документация за това. - person ShawnP96; 26.04.2020
comment
Можете да дефинирате някои повтарящи се формални задачи с node-schedule. Така че вашата функция е грешна. Каква точно е тази функция? @shawnp96 - person Saeed; 27.04.2020
comment
Всъщност го разбрах, много просто решение. return db('users).update(daily_points=0, etc etc) Въпреки че не мисля, че това е най-сигурният начин да го направите. Намерих го на knexjs.org @Saeed - person ShawnP96; 28.04.2020