从 Sequelize 获取查询结果,然后 运行 逐个结果地抓取作业

Get query results from Sequelize then run a scraper job result by result

我正在尝试通过 Sequilize 查询数据库,然后我想使用返回到 运行 的每条记录进行抓取作业(使用 puppeteer)。我希望它 运行 只记录一条记录,就像我们开始抓取第一条记录,然后等待第一条记录完成,然后继续进行第二条记录。

到目前为止,这是我的代码 抓取控制器:

exports.directFind = async (vin, res) => {
    if (vin) {
        let browserInstance = browserObject.startBrowser();
        await scraperController(browserInstance,vin)
        .then(results => {
            return res(results)
        });
    } 
};

使用爬虫发送通知的功能

const sendNotif = async () => {
    Vins.findAll({raw : true}).then(async (vins) => {
        await vins.map(async (vin) => {
            console.log(vin.vin)
            await search.directFind(vin.vin,function(res) {
                status.findLatestVinStatus(vin.id,function(latestVINStatus) {
                    if (latestVINStatus.vmacs3CharCode == res.result.order.vmacs3CharCode || latestVINStatus.gobStatusCode == res.result.order.gobStatusCode) { //to be cganged for prod
                        console.log("we need to send notif")
                        //sendEmail(res.result)
                    }
                });
            })
            console.log('end')
        });
    })
}

谢谢

您可以使用 for 循环将结果逐一检查:

for (const vin of await Vins.findAll({raw : true})) {
  await search.directFind(vin.vin, res => { // ... })
}