Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何执行顺序查询?_Javascript_Node.js - Fatal编程技术网

Javascript 如何执行顺序查询?

Javascript 如何执行顺序查询?,javascript,node.js,Javascript,Node.js,我有这样一个要求: try { /* 1) */ const dayReports = await DayReport.findAll(query); dayReports.forEach((dayReport, index) => { /* 2) */ const findAllYear = DayReport.findAll({ where: { [Op.and]: [

我有这样一个要求:

try {
    /* 1) */
    const dayReports = await DayReport.findAll(query);
    dayReports.forEach((dayReport, index) => {
        /* 2) */
        const findAllYear = DayReport.findAll({
            where: {
                [Op.and]: [
                    {
                        report_date: {
                            [Op.between]: [new Date(dayReport.dataValues.report_date).getFullYear() + '-01-01', dayReport.dataValues.report_date]
                        }
                    }
                ]
            }
        });
        /* 3) */
        var get_sinking_year = 0;
        for (var i = 0; i < findAllYear.length; i++) {
            get_sinking_year += findAllYear[i].dataValues.sinking_day
        } 
        /* 4) */
        console.log(get_sinking_year)
    })
} catch (e) {
    errorHandler(res, e);
}
试试看{
/* 1) */
const dayReports=await DayReport.findAll(查询);
dayReports.forEach((dayReport,索引)=>{
/* 2) */
const findAllYear=DayReport.findAll({
其中:{
[作品及]:[
{
报告日期:{
[Op.between]:[new Date(dayReport.dataValues.report_Date).getFullYear()+'-01-01',dayReport.dataValues.report_Date]
}
}
]
}
});
/* 3) */
var get_sinking_year=0;
for(var i=0;i
我需要按顺序执行请求,因为注释中的数字位于(即1,2,3,4.)


相反,我的请求按以下顺序执行:1,3,4,2。

试试这个。它首先收集所有
findAllYear
结果(步骤2),然后对每个结果执行步骤3和4

try {
    /* 1) */
    const dayReports = await DayReport.findAll(query);

    const allYearArraysPromises = [];
    dayReports.forEach((dayReport, index) => {
        /* 2) */
        const findAllYear = DayReport.findAll({
            where: {
                [Op.and]: [
                    {
                        report_date: {
                            [Op.between]: [new Date(dayReport.dataValues.report_date).getFullYear() + '-01-01', dayReport.dataValues.report_date]
                        }
                    }
                ]
            }
        });
        allYearArraysPromises.push(findAllYear);
    }
    const allYearArrays = await Promise.all(allYearArraysPromises);
    allYearArrays.forEach((findAllYear) => {
        /* 3) */
        var get_sinking_year = 0;
        for (var i = 0; i < findAllYear.length; i++) {
            get_sinking_year += findAllYear[i].dataValues.sinking_day
        } 
        /* 4) */
        console.log(get_sinking_year)
    });
} catch (e) {
    errorHandler(res, e);
}

您需要在循环中等待查询结果。目前,它正在返回一个承诺,并直接进入以下代码


尝试对“DayReport.findAll()”使用等待或承诺。也可以使用map而不是for循环。

但是我需要使用
dayReports.forEach((dayReport,index)=>{