使用多个线程执行多个 sequelize 查询

Perform multiple sequelize query with multiple threads

我目前正在使用 await 一个一个地执行所有查询,因此在 res.send(),

之前获取所有数据
    var classes = await Classes.findAll({ where: { isActive: 'Y' } })
    var users = await Users.findAll({ where: { isActive: 'Y' } })
    var calender = await Calender.findAll({ where: { isActive: 'Y' } })

    res.status(500).send({classes, users, calender})

我想要的是,每个查询都由不同的线程执行,并在 res.send() 之前等待,这样可以节省执行时间。

我相信有一个使用 Sequelize 的更好的解决方案。

虽然这与多线程不完全相同,但您正在寻找的解决方案是异步执行的并发查询。对于结果不相互依赖的任何异步 I/O,这确实是最佳解决方案。

使用Promise.all()同时解决所有查询。您可以使用数组解构器来获取从每个承诺返回的每个值。

当变量的值不会改变时,最好使用 const 而不是 var

const where = { isActive: 'Y' };

const [ classes, users, calender ] = await Promise.all([
  Classes.findAll({ where }),
  Users.findAll({ where }),
  Calender.findAll({ where }),
]);

res.status(500).send({classes, users, calender});

注意 - 你也有打字错误,“calender”应该是“calendar”