How can I save into a dataset after the query is done for each items inside a for loop?

Basically I want to check who is from the dataset Profiles inside the Members. Once I found it I needed to save a string text of PAID into the profile dataset.

At the moment on that page I just have a button that triggers this function.
Please share with me your comments.

export function button1_click ( event ) {

    let itemIndex = $w("#dataset1").getCurrentItemIndex(); 
    let hasNext = $w("#dataset1").hasNext(); // true 
    let location = $w("#dataset1").getCurrentItem(); 
    let count = $w("#dataset1").getTotalCount(); 
    console.log("Size of the Dataset: ", count); 

    for(var i = 0; i < count; i++){ 
     $w("#dataset1").getItems(i,1) 
      .then( (result) => { 
        //console.log(result); 
        let memE = result.items[0].memberEmail; 
        console.log(memE); 

//========================================================== qUERY
wixData.query(“Members/PrivateMembersData”)
.eq( “loginEmail” , memE)
.find()
.then( (resultsmem) => {

            if(resultsmem.items.length > 0) {  
                console.log("PAID") 
                $w("#dataset1").setFieldValues( { 
                "paymentStatus":  "PAID", 
                "verificationStatus": "Need Approval" 
                }); 
                $w("#dataset1").save(); 
            } 
            else{ 
            console.log("NoOrder") 
                console.log("PAID") 
                $w("#dataset1").setFieldValues( { 
                "paymentStatus":  "Not PAID", 
                "verificationStatus": "NoOrder" 
                }); 
                $w("#dataset1").save(); 
            } 
        })  // - .Close Query for email  

        .catch( (err) => { 
            let errorMsg = err; 
        }); 

//========================END QUERY=====================================================

      }) //cerrar el then 
    } // Cerrando FOR Loop 

}

I think you have another way to aproach this code. First of all you have to collect all loginEmails from ‘PrivateMembersData’ into an Array of emails in order to compare it with every memberEmail from #dataset1 items in a ‘for’ cycle. So you don’t have to operate in a ‘for’ cycle a lot of async functions like ‘dataset.getItems’ or ‘wixData.query’ which take much time. Finally, the #dataset1 items properties ‘paymentStatus’ & ‘verificationStatus’ will be updated as the case may be (‘memberEmail’ is or not found into above Array of emails). After finishing the compare cycle, all items of #dataset1, at once, will be saved into Collection of #dataset1 through ‘bulkSave’ facility
My solution looks like that:

////-----
wixData . query ( “Members/PrivateMembersData” )
. find ()
. then ( ( resultsmem ) => {
let members = resultsmem . items
let emails =[]
for ( let m = 0 ; m < members . length ; m ++){
emails . push ( members [ i ]. loginEmail )
}
let count = $w ( “#dataset1” ). getTotalCount ();
$w ( “#dataset1” ). getItems ( 0 , count )
. then ( ( result ) => {
let items = result . items
for ( let i = 0 ; i < count ; i ++){
if ( emails . indexOf ( items [ i ]. memberEmail ) !==- 1 ){
items [ i ]. paymentStatus = “PAID”
items [ i ]. verificationStatus = “Need Approval”
}
else {
items [ i ]. paymentStatus = “Not PAID”
items [ i ]. verificationStatus = “No Order”
}
}
wixData . bulkSave ( ‘Collection Of #Dataset1’ , items )
})
})
///-----