IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

TypeScript Discussion :

Traiter un get recu d'une query de form multiple array


Sujet :

TypeScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Par défaut Traiter un get recu d'une query de form multiple array
    Bonjour,

    J'ai en nodejs et Typescript un get de forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [["exposant.raisonSociale","=","Alexandre"],"and",["etat","=","Terminé"]]
    Comment je peux traiter ? décomposer genre avoir un tabelau en découpant par ici "and" ?

    Merci

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Curieux format, je me demande à quel besoin c’est censé répondre.

    Ta question est un peu vague. Ton but est-il de transformer le tableau en une autre structure ? Ou de récupérer une info en particulier ? Ou de parcourir le tableau et d’appliquer un traitement en fonction des valeurs rencontrées ?

    Pour commencer, je partirais sur une boucle for..of avec une détection de type légère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for (let item of tableauRecu) {
      if ("and" === item) {
         ...
      }
      else if (item instanceof Array) {
        ...
      }
     
    }
    Ce "and" me laisse penser qu’il pourrait aussi y avoir des "or" (et pourquoi pas des "not"), ce qui pourrait amener à des situations ambigües où l’usage des parenthèses deviendrait une nécessité. Dans ce cas, le format serait une sorte de micro-langage, et il faudrait mettre en œuvre un interpréteur.

    Par curiosité, d’où provient ce tableau ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Par défaut
    Citation Envoyé par Watilin Voir le message
    Par curiosité, d’où provient ce tableau ?
    Cel viens en fait de l'outil DevExtreme exemple : https://js.devexpress.com/Demos/Widg...Angular/Light/

    quand je filtre il envoi les données en GET et l'url de GET émis est du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    &take=10&filter=[%22exposant.raisonSociale%22,%22=%22,%22Alexandre%22]
    C'est principalement pour les données en DataGrid gérer le filtre et retourner le résultat en donnant à Mysql (requête) les bon paramètres ...

    Merci

  4. #4
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    D’accord.

    Du coup, quel est ton objectif ? De quelle façon veux-tu traiter ce tableau ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Par défaut
    Bonsoir,

    Je crois j'ai trouver une solution peut être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    filter = JSON.parse(filter);
     
                filter  = [...filter];
     
                const filterSplitFirst = filter.toString().split(',and,');
     
                filterSplitFirst.forEach(element => {
                    const filterSplitSecond = element.replace(/,/g, '').split('=');
     
                    const q = filterSplitSecond[0];
                    const operator = '=';
                    const search = filterSplitSecond[1];
     
                    query.andWhere(q + ' ' + operator + ' :search', { search });
                });
    Es-ce la bonne solution ?

  6. #6
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Citation Envoyé par Paul75 Voir le message
    Es-ce la bonne solution ?
    Pour être honnête, je trouve que les passages avec split manquent d’élégance. C’est peut-être plus court en lignes de code, mais d’un point de vue algorithmique, c’est plus complexe :
    • toString sérialise le tableau en chaîne ;
    • derrière, split convertit cette chaîne en un nouveau tableau,
    • pendant ce temps, le tableau original est toujours en mémoire car il y a toujours la variable filter qui pointe dessus.

    Donc cette façon de faire est gourmande à la fois en temps et en mémoire.

    Il est possible de tout faire en une seule boucle. Voici comment je ferais :

    Pour commencer, tu n’as pas besoin de ... car la structure est déjà un tableau. Tu peux itérer directement dessus avec une boucle for..of comme dans mon exemple, ou avec la méthode forEach comme tu as fait.

    Ensuite, ignore simplement les items "and" quand tu les rencontres dans ta boucle.

    Enfin, je n’utiliserais pas split donc les sous-tableaux garderaient leur forme, donc pas besoin de replace. Tu pourrais donc accéder directement à element[0] et element[2], en supposant que les infos se présentent toujours sous la forme [ "machin", "=", "truc" ].

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    JSON.parse(filter).forEach((element) => {
      if ("and" === element) return;
     
      const q = element[0];
      const operator = '=';
      const search = element[2];
     
      console.log(`q = ${q}`);
      console.log(`operator = ${operator}`);
      console.log(`search = ${search}`);
     
      query.andWhere(`${q} ${operator} :search`, { search });
    });
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/07/2006, 11h42
  2. [VB6]Traiter des enregistrements recuperer par une recherche
    Par tamerlan dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/03/2006, 11h06
  3. Ecrire le résultat d'une query dans un fichier txt
    Par jbaers dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/11/2005, 01h49
  4. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 15h48
  5. [JDBC] SQL Exception lors d'une Query !
    Par Castagnems dans le forum JDBC
    Réponses: 5
    Dernier message: 30/04/2004, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo