setTimeout是安排跨几天任务的正确选项吗?

我正在创建一个用户管理系统。主持人可以选择在特定天数内屏蔽用户。收到阻止请求后,用户的禁用属性在数据库中设置为true。经过指定的持续时间后,该值将设置回false。持续时间可能在1到10天之间。 setTimeout()是正确的选择吗?如果同时运行多个用户,是否会占用大量CPU?

这是我程序中的功能。完整的程序使用express作为服务器和mongoose与mongodb数据库进行交互。

function disableUser(req,res) {

    let username = req.body.username;
    let app = req.body.app;
    let duration = req.body.duration;
    let reason = req.body.reason;

    User.find({username:username}).then((result) => {
        let user = result[0];
        user.disabled = true;
        user.save().then((user) => {
            disableMail(app, user.email, duration, reason); //send mail to user
            // schedule a task to set user.disabled to false after the duration
        }, (err) => {
            res.status(500).send(err);
        });
    }, (err) => {
        res.status(500).send(err);
    });

}
评论