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

 

  1. #1
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    mai 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2010
    Messages : 159
    Points : 220
    Points
    220

    Par défaut Utilisation des données avec pg

    Bonjour à tous j'ai un problème sur une fonction que je n'arrive pas à résoudre.
    Avec pg j'ai ma requete tel quel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var ami;
    clis.query("SELECT a.personid1, a.personid2 FROM sf_ami AS a WHERE ((a.personid1 = "+personid+" AND a.personid2 = "+sender+") OR (a.personid1 = "+sender+" AND a.personid2 = "+personid+") ) AND accepte =1",'', function (err, result){
    console.log(result);
    ami = result;
    });
    console.log(ami);
    Le premier console.log affiche bien tous les résultats par contre ami affiche rien. Donc je ne peux pas utiliser les données dans le reste de la page.
    Avez-vous une idée?

    Franck

  2. #2
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2014
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2014
    Messages : 168
    Points : 240
    Points
    240

    Par défaut

    Bonjour,

    Ton console.log(ami) se trouve a l’extérieur de ta callback.
    Nodejs est un langage asynchrone ce qui veut dire que le code ne s’exécute pas forcement dans l'ordre dans lequel il s'affiche.


    Ce que tu fais la, c'est:
    -declarer ami
    -lancer une requête sql
    -afficher ami
    -la requête sql se termine, la callback est appelé
    -afficher le résultat de la requête

    Il faut que tu change ton fonctionenment.

    GLHF!

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    mai 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2010
    Messages : 159
    Points : 220
    Points
    220

    Par défaut

    Merci pour ta réponse mais je ne vois pas comment changer car je charge des membres et en fonction de chaque membre je dois vérifier si ils sont amis donc je dois faire des boucles et à chacune récupérer la réponse. Je vois pas comment faire autrement.

    Franck

  4. #4
    Modérateur
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2005
    Messages
    3 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2005
    Messages : 3 451
    Points : 13 484
    Points
    13 484

    Par défaut

    Si tu veux faire les requêtes unitairement il va falloir te plonger dans la gestion de l'asynchrone avec les promesses (pour démarrer, ensuite tu peux regarder du côté de async / await).

    Le mieux serait de tout réaliser sur une requête. Si tu nous donnes la structure de ta base on pourra t'aider à l'écrire. Je suis à peu près certain que ça doit pouvoir se faire avec une ou deux jointures. A noter que sur developpez.com tu as probablement les meilleurs cours de SQL qui existent. Même en anglais tu ne trouveras pas mieux ils sont vraiment supertop (ceux de Frédéric Brouard en particulier).
    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  5. #5
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    mai 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2010
    Messages : 159
    Points : 220
    Points
    220

    Par défaut

    Bonsoir Marco, sur une seule requête ça va être très compliqué car je dois chargé des notifications (avec le membre émetteur, le membre réceptionneur, si ils sont connectés, savoir si ils sont amis entre eux, savoir si ils ont fait une demande d'ami entre eux, avoir le titre et la date de l’élément sur lequel l'action est faites, plus un système de points et de médaille). Bref beaucoup de requêtes très différentes et surtout en fonction de la sortie de la requête précédente pour certaines. Même en réduisant au maximum je suis obligé d'avoir plusieurs requêtes.
    Je vais regarder les cours voir si je peux en gagner une ou deux.

    Merci pour l'info.

    Franck

  6. #6
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2014
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2014
    Messages : 168
    Points : 240
    Points
    240

    Par défaut

    Bonjour,

    Est ce que tu as pensé à utiliser un ORM pour ton app?
    Cela dépend du niveau d'optimisation que tu souhaite mais ca peut te faciliter la vie si tu as plein de liaisons et qu tu souhaite récupérer plusieurs entité.

    GLHF!

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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