Один из способов добиться этого - сначала выполнить все запросы, используя Promise.all
, и, как только вы получите результаты, создайте новый объект.Что-то вроде:
const week = [
{ id : 1, day : 1 },
{ id : 2, day : 2 },
{ id : 3, day : 3 },
{ id : 4, day : 4 },
{ id : 5, day : 5 },
{ id : 6, day : 6 },
{ id : 7, day : 7 }
];
const returnResultOfQuery = () => {
return Dinner1300.count ().exec ( function ( err, count ) {
const random = Math.floor ( Math.random () * count );
return Dinner1300.findOne ().skip ( random ).exec (
function ( err, result ) {
console.log ( result );
return result;
} );
} );
};
let promises = [];
for ( let x in week ) {
promises.push ( returnResultOfQuery () );
promises.push ( returnResultOfQuery () );
promises.push ( returnResultOfQuery () );
}
let diet = [];
Promise.all ( promises ).then ( function ( result ) {
let i = 0;
for ( let x in week ) {
diet.push (
{
id : x.id,
day : x.day,
meals : [
result[ i ],
result[ i + 1 ],
result[ i + 2 ]
]
}
);
i = i + 3;
}
} );
console.log ( diet );
PS: Я не проверял вышеуказанный код.