Corvid problem

Hello,

I really have a big problem with a simple code

I would like to automatically run my code. Here is the code

{
 "jobs": [{
 "functionLocation": "/suivisDeColis.js",
 "functionName": "suivisColis",
 "description": "Suivis du colis",
 "executionConfig": {
 "cronExpression": "0 * * * *"
            }
        },
        {
 "functionLocation": "/backInStock.jsw",
 "functionName": "sendBackInStockNotification",
 "description": "Envoyer une notification de retour en stock",
 "executionConfig": {
 "cronExpression": "0 * * * *"
            }
        ]
    }

The “/backInStock.jsw” works correctly

import wixData from 'wix-data';

export function suivisColis() {

 return wixData.query("Suivisdecolis").find().then((results) => {

 const items = results.items;

 for (let i = 0; i < items.length; i++) {

                wixData.get("Suivisdecolis", items[i]._id)
                    .then((item) => {
                        item.test = "OK1111";
                        wixData.update("Suivisdecolis", item);
                    });
            }
        });
}

My code does not execute. Could someone help me please?

Ce serait mieux si vous parliez en anglais.

Then everybody would understand you and then you would have more chance to get some help :wink:

Here, I rectify my post

I guess you have Promise limit timeout error on console or your return has no results. You are using many Promises, WixData is a Promise.

export function suivisColis() {

return wixData.query( “Suivisdecolis” ).find().then((results) => {
**** This return has no return from inner promise .then(). Maybe not necessary.
const items = results.items;

for ( let i = 0 ; i < items.length; i++) { *** loop for Promises, async out of control.
wixData.get( “Suivisdecolis” , items[i]._id)
.then((item) => {
item.test = “OK1111” ;
wixData.update( “Suivisdecolis” , item);
});
}
});
}

One possible way is: using async/await.
Read about bulkupdate() to update items (array of objects) in one call.
Debug using log.

return wixData . query ( “Suivisdecolis” ). find (). then ( ****async function ( results ) {
const items = results . items ;

for ( let i = 0 ; i < items.length; i++) {
**** await wixData.get( “Suivisdecolis” , items[i]._id)
.then(****async function (item) {
item.test = “OK1111” ;
**** await wixData.update( “Suivisdecolis” , item);
});
}
**** return
});
}

Thank you ! I will try I will get back to you as soon as possible

I just tried with the following code. Because the goal is for the tracking status to change if the delivery date is equal to today’s date. The code did not work. Can you help me ?

import wixData from 'wix-data';

export async function suivisColis() {

 return wixData.query('Suivisdecolis').find().then(async function (results) {

 const items = results.items;

 for (let i = 0; i < items.length; i++) {

            items[i].test = 'test11111111';

 if (items[i].etat === '6b6a3595-75b8-4546-9ca0-73ccdc322a37') {

 var maintenantLiv = items[i].dateDeLivraison;
 var jourLiv = maintenantLiv.getDate();
 var moisLiv = maintenantLiv.getMonth() + 1;
 var anLiv = maintenantLiv.getFullYear();

 var maintenant = new Date();
 var jour = maintenant.getDate();
 var mois = maintenant.getMonth() + 1;
 var an = maintenant.getFullYear();

 if (jour === jourLiv & mois === moisLiv & an === anLiv) {
 await wixData.get("Suivisdecolis", items[i]._id)
                        .then(async function (item) {
                            item.etat = "a7fda939-a6a8-4bf3-a2f8-5d0d04373235";
                            item.test = "Prêt";
 await wixData.update("Suivisdecolis", item);
                        });
                }
            }
        }
 return
    });
}

Use console.log() to track each wixData…find().then()

Voilà le problème se situe dans le code ici. J’ai tenté de raccourcir mon code pour voir ou était le problème. Effectivement le problème est dans les variale (var) de mon code. J’aimerais savoir comment faire pour récupérer la date du jour actuelle en format (jour/mois/année) ainsi que celle dans ma base de donnée (datedelivraison) dans le même format (jour/mois/année) et de vérifier si les deux sont égale. Si c’est le cas d’exécuter la requète ?

 var maintenantLiv = items[i].dateDeLivraison;
 var jourLiv = maintenantLiv.getDate();
 var moisLiv = maintenantLiv.getMonth() + 1;
 var anLiv = maintenantLiv.getFullYear();

 var maintenant = new Date();
 var jour = maintenant.getDate();
 var mois = maintenant.getMonth() + 1;
 var an = maintenant.getFullYear();

 if (jour === jourLiv) {
   console.log('jour égale');
}

Code I tried to figure out :

import wixData from 'wix-data';

export function suivisColis() {
 try {
 return wixData.query("Suivisdecolis").find().then((results) => {

 const items = results.items;

 for (let i = 0; i < items.length; i++) {

 if (items[i].etat === '6b6a3595-75b8-4546-9ca0-73ccdc322a37') {
 try {
                        console.log('prêt à livrer');

 var maintenantLiv = items[i].dateDeLivraison;
 var jourLiv = maintenantLiv.getDate();
 var moisLiv = maintenantLiv.getMonth() + 1;
 var anLiv = maintenantLiv.getFullYear();

 var maintenant = new Date();
 var jour = maintenant.getDate();
 var mois = maintenant.getMonth() + 1;
 var an = maintenant.getFullYear();

 if (jour === jourLiv) {
                            console.log('jour égale');
                        }
                    } catch (err) {
                        console.log(err);
                    }

                    wixData.get("Suivisdecolis", items[i]._id)
                        .then((item) => {
                            item.test = "Code auto : " + items[i].dateDeLivraison;
                            wixData.update("Suivisdecolis", item);
                        });
                }
            }
        });

    } catch (err) {
        console.log(err);
    }

}