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)=>{