Directus flows $NOW

Salut à tous,
Je suis actuellement bloqué avec un flux Directus.
J’ai besoin de comparer un DateTime de ma base de donnée avec le jour actuel. En lisant la doc Directus j’ai trouvé exactement ce qu’il me faut: la variable dynamic $NOW. Mais celle-ci ne me retourne jamais rien si ce n’est que des erreurs.

Voici mon code :

{
« $trigger »: {
« date »: {
« _eq »: « {{$NOW}} »
}
}
}

J’ai essayé avec et sans les {{ }}, mais rien n’y fait.
Est-ce que j’utilise une mauvaise syntax ou est-ce que le problème est déjà connu ?
Y aurait-il une autre alternative ?

J’ai ouvert un sujet sur le GitHub et Directus et ne manquerais de vous tenir informé d’un éventuel retour sur ce canal.

Merci d’avance pour votre aide.

Fabio

1 « J'aime »

Hello,

Effectivement le NOW n’a pas l’air de fonctionner, tu peux essayer de contourner en utilisant un script expl :

module.exports = async function(data) {
    var dateTest = Date.parse(data.$last.date);
    var dateNow = Date.now();
    return {
        "date":dateTest,
        "now":dateNow,
        "result":dateNow >= dateTest
    };
}

Ensuite tu réutilise le résultat dans ta condition

{
    "$last": {
        "result": {
            "_eq": true
        }
    }
}

Ton flux ressemblerait alors à quelque chose du genre :

Ciao,

Merci beaucoup d’avoir pris le temps de me répondre.
Ton explication est très claire.
Ta solution fonctionne à la perfection, ca va me permettre de bien avancé!

Merci beaucoup :slight_smile:

Pour compléter un peu ta solution :

  • Il faut savoir que Date.now() nous renvoie une date en milliseconde.
    => Pour ajouter ou retirer 1 jour il faut additionner / soustraire la valeur 86400000.
    => Pour obtenir une valeur plus lisible ou peut utiliser la fonction .toLocaleDateString(); de la manière suivante :
    var test = Date.parse(data.$trigger.date);
    var transit = new Date(test)
    var dateReadable = transit.toLocaleDateString();

Mais si l’idée de base est de comparer 2 dates, alors le résultat en milliseconde fait le job à la perfection !

Merci encore pour ton aide !

Fabio

1 « J'aime »