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!
 
     
    