Я получил объект обещания, который был возвращен sequelize.findAndCountAll () , и я хочу отфильтровать объект перед отображением их.
Вот мой код:
async function getCountTask(id){
return await Tasks.count({
where: {
studentID: id,
status: 'Done',
grade: ['A', 'B']
}
});
}
let totalStudent = [];
await Promise.all(
listStudent.filter(async (f) => {
const count = await getCountTask(f.id);
if(count <= 3){
return false;
}
return true;
}).map(async (e) => {
let obj = {};
obj.id = e.id;
obj.age = e.age;
obj.status = 'Great';
totalStudent.push(obj);
})
)
Мое ожидание listStudent содержит 5 данных, но после фильтрации будет содержать только 3 данных, потому что 2 других не прошли условие. Таким образом, для окончательного результата totalStudent , содержащий 3 данных.
Но что я получил из приведенного выше кода, totalStudent имеет данные, точно такие же, как listStudent . Это потому, что сначала обрабатывается карта, а затем фильтр, поэтому карта обрабатывает данные, которые еще не были отфильтрованы.
Как сделать так, чтобы сначала она стала фильтром, а затем отобразить данные.
Заранее спасибо.