Запланируйте ежедневное выполнение задачи на моем mongodb, используя nodejs - PullRequest
0 голосов
/ 10 марта 2020

Я пытался сделать что-то, что звучит легко, но не удается заставить это работать. Мне бы хотелось, чтобы каждый день вызывалась функция, чтобы она меняла значение в моей базе данных. Для этого я использую функцию setInterval () из js

setInterval(()=>reset(),10000)

, где моя функция сброса равна

function reset(){
  console.log("here")
  try{
      const user =  Users.updateMany(
          {$set : { voteAverage : 1 }}
      );
      console.log("good")
  }catch(err){
      res.json({message: err})
      console.log(err)
  }
}

Я получаю товар в своей консоли, но моя база данных имеет не изменилось. Я мог бы сделать это неправильно, но я действительно не знаю, как это сделать. Сначала я пытался сбросить все, когда я исправлял маршрут, и это работало. Но сейчас я не хочу использовать маршрут, просто хочу, чтобы он работал так. Это вообще возможно?

Заранее спасибо

1 Ответ

0 голосов
/ 10 марта 2020

Я вижу две проблемы здесь

  • updateMany - асинхронная c операция, но вы ее не ожидаете. Так что либо дождитесь этого и сделайте вашу функцию асинхронной c, либо верните ее как обещание.

  • updateMany принимает два параметра. Первый - это фильтр, а второй - до c. Я думаю, вы не предоставляете никаких фильтров.

что-то вроде этого

async function reset() {
  console.log("here");
  try {
    const user = await Users.updateMany(
      {"$set": {"voteAverage": 1}}
    );
    console.log("good");
  } catch (err) {
    res.json({"message": err});
    console.log(err);
  }
}

setInterval(async () => reset(), 10000);
...