使用 nodejs 在我的 mongodb 上每天安排一个任务 运行

Schedule a task to be run everyday on my mongodb using nodejs

我一直在尝试做一些听起来很容易但无法做到的事情。 我希望每天都有一个函数被调用,这样它就会改变我数据库中的一个值。 为此,我使用了 js

中的 setInterval() 函数
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)
  }
}

我在控制台中恢复正常,但我的数据库没有改变。我可能会以错误的方式做到这一点,但我真的不知道该怎么做。 起初我在修补路线时尝试重置所有内容并且它有效。但是现在我不想使用一条路线只是想像这样 运行 。这可能吗?

提前致谢

我看到这里有两个问题

  • updateMany 是异步操作,但您没有等待它。因此,要么等待它并使您的函数异步,要么 return 它作为一个承诺。

  • updateMany 有两个参数。第一个是过滤器,第二个是文档。我猜你没有提供任何过滤器。

像这样

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);