Simply put, I cannot understand why my "listeCommandites" Array shows 20 elements before I loop through it and then the console.log(item) within the loop only iterates through 17 elements. Lines i'm talking about for console.log() are in the last code snippet. Here's a code sample:
...
async function createOrUpdateCommandite(pPostId, pRecordID, nom, status, meta) {
const headers = {
'Authorization': 'Basic ' + auth,
'Content-Type': 'application/json'
};
const postData = {
"title": nom,
status,
"meta": meta
};
let response;
try {
if (pPostId) {
// Update existing post
response = await fetch(`${wpDomain}/wp-json/wp/v2/commanditaires/${pPostId}`, {
method: 'POST',
headers,
body: JSON.stringify(postData)
});
} else {
// Create new post
response = await fetch(`${wpDomain}/wp-json/wp/v2/commanditaires`, {
method: 'POST',
headers,
body: JSON.stringify(postData)
});
}
const responseData = await response.json();
if (response.ok) {
console.log(`Commandite ${responseData.id} ${pPostId ? 'updated' : 'created'} successfully.`);
await commanditeTable.updateRecordAsync(pRecordID,{
"WP Commandite Post ID": responseData.id
})
} else {
console.error(`Error ${pPostId ? 'updating' : 'creating'} commandite:`, responseData.message);
}
} catch (error) {
console.error(`Error ${pPostId ? 'updating' : 'creating'} commandite:`, error.message);
}
}
...
async function getListeCommandites(pCommandites) {
if (pCommandites !== null) {
for (let commandite of pCommandites) {
const commanditeRecord = queryCommanditeTable.getRecord(commandite.id);
if(commanditeRecord !== null && commanditeRecord.getCellValue("Statut").name == "Confirmé") {
listeCommandites.push({
'id': commandite.id,
'commandite-post-ID': commanditeRecord.getCellValue("WP Commandite Post ID") === null ? null : commanditeRecord.getCellValue("WP Commandite Post ID"),
'commandite-image-id': commanditeRecord.getCellValue("Web - commandite image ID"),
'commandite-lien': commanditeRecord.getCellValueAsString("Web - commandite lien"),
'commandite-nom': commanditeRecord.getCellValue("Nom complet (from Client)"),
'commandite-debut': toTimestamp(commanditeRecord.getCellValue("Commandite - Début affichage web (from Salon)")),
'commandite-fin': toTimestamp(commanditeRecord.getCellValue("Commandite - Fin affichage web (from Salon)")),
'commandite-recordID': commanditeRecord.id
})
}
}
}
}
...
getListeCommandites(commandites).then(()=> {
console.log(listeCommandites); // HERE, THE LOGS SHOWS 20 ARRAY ENTRIES
//for (let item of listeCommandites) {
listeCommandites.forEach(function (item) {
console.log(item); // HERE, THERE IS ONLY 17 ITERATIONS
let commPostID = item["commandite-post-ID"];
let meta = {
'commanditaire-image-id': item["commandite-image-id"] === null ? null : item["commandite-image-id"].toString() ,
'commanditaire-site-web': item["commandite-lien"],
'debut-affichage': item["commandite-debut"],
'fin-affichage': item["commandite-fin"]
}
createOrUpdateCommandite(commPostID, item["commandite-recordID"], item["commandite-nom"][0], 'publish', meta)
})
})