I have a function:
static async assign( assigned_data, assigned_by ) {
return new Promise( async ( resolve, reject ) => {
let orders = [];
await assigned_data.map( async( data ) => {
// find each order and update
await data.assigned.map( async( order_id ) => {
await this.findByIdAndUpdate( order_id, {
$set: {
current_assigned: {
user: data._id,
assigned_by: assigned_by,
},
last_assigned_at: Date.now(),
last_assigned_by: assigned_by,
},
$addToSet: {
assigned_history: {
user: data._id,
assigned_by: assigned_by,
}
},
}, ( error, order ) => {
if ( error ) {
console.log( 'error', error );
}
console.log( 'order', order );
orders.push( order );
} );
} );
} );
resolve( orders );
} );
}
Even console.log( 'order', order ); print out order, but I can not push it to orders array.
But orders array still empty when I use this function.
When I use setTimeout it return extractly what I want.
setTimeout(function() {
resolve( orders );
}, 1000);
I don't want to using setTimeout, because I don't known how much time to set (eg. 1000 ms in above code).
Please tell me what wrong with my code. Thanks you very much!