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

NodeJS Discussion :

Comment retourner une data


Sujet :

NodeJS

  1. #1
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut Comment retourner une data
    Bonjour,

    J'apprends à utiliser nodejs avec adonisjs. J'ai codé une route qui renvoi vers un Controller qui exécute un provider.
    Le but est très simple, je veux juste me connecter à un ldap, et retourner les détails d'un utilisateur sans utiliser les callback, mais plutôt les promises (faut bien apprendre ...).
    Pour le moment dans mon provider, j'ai fait beaucoup de console.log. J'implémenterai les retour des ok/error quand je saurai comment faire ...

    Je passe le fichier de routes car pas important. Voici mon Controller:
    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
    class AuthenticationController {
      async checkUser({request, response}) {
        let tmp = await Ldap.verifyUser(request.body);
        console(tmp);
     
        let statusCode = 200;
        let result = {
          status: "success",
          statusCode: statusCode,
          statusMessage: "Command granted",
          data: "ok"
        };
        await response.status(statusCode).json(result);
      }
    }
    Et mon Provider. Pourquoi est ce que le return ne renvoie rien ?? Je pensais que le await servait justement à récupérer les data quand ils sont prêt ?

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    class Ldap {
      constructor(Config) {
        this.config = Config;
        //console.log(this.config);
      }
      async verifyUser(request) {
        const self = this;
     
        var LdapClient = require('promised-ldap');
        var client = new LdapClient({
          url: "ldap://" + Env.get('LDAP_HOST') + ":" + Env.get("LDAP_PORT")
        });
     
        let opts = {
          filter: '(&(sAMAccountName=' + request.username + ')(cn=*))',
          scope: 'sub',
          attributes: []
        };
     
        client.bind(Env.get('LDAP_USER'), Env.get('LDAP_PASSWORD'))
          .then((data) => {
            console.log("bind ok");
          })
          .catch((error) => {
            console.error(error);
          });
     
        client.search(Env.get('LDAP_BASE_DN'), opts)
          .then((data) => {
            let dn = data.entries[0].objectName;
            let userDetails = data.entries[0].object;
            client.bind(dn, request.password)
              .then((data) => {
                //console.log(data);
                console.log("=== true ===");
                return data; // J'ESSAI DE RECUPERER CA
              })
              .catch((error) => {
                console.error(error);
              });
          })
          .catch((error) => {
            console.error(error);
          });
        client.unbind();
      }
    }
    J'espère que vous pourrez m'aider.

  2. #2
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 153
    Points : 316
    Points
    316
    Par défaut
    Hello,

    tente ceci:

    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
    16
    17
    18
     
    let result = await client.search(Env.get('LDAP_BASE_DN'), opts)
          .then(async (data) => {
            let dn = data.entries[0].objectName;
            let userDetails = data.entries[0].object;
            return await client.bind(dn, request.password)
              .then((data) => {
                //console.log(data);
                console.log("=== true ===");
                return data; // J'ESSAI DE RECUPERER CA
              })
              .catch((error) => {
                console.error(error);
              });
          })
          .catch((error) => {
            console.error(error);
          });
    result devrait contenir tes datas
    Ma plateforme de formations digitales (développement Web, cybersécurité, SEO, Marketing digital)

    https://monformateurindependant.com

  3. #3
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    Bonjour,

    ca ne fonctionne pas:

    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
    16
    17
    let result = await client.search(Env.get('LDAP_BASE_DN'), opts)
          .then(async (data) => {
            let dn = data.entries[0].objectName;
            let userDetails = data.entries[0].object;
            return await client.bind(dn, request.password)
              .then((data2) => {
                return "hello world";
              })
              .catch((err2) => {
                console.error(err2);
                return err2;
              });
          })
          .catch((error) => {
            console.error(error);
            return error;
          });
    Je ne récupère jamais dans mon controller la data. Je renvoie "hello world" pour tester, mais à terme ce sera la variable userDetails.

  4. #4
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 153
    Points : 316
    Points
    316
    Par défaut
    Effectivement, autant pour moi, j'avais mal compris ton problème

    C'est plus quelque chose dans ce genre:

    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
    16
    17
    18
    19
    20
    21
    22
     
    let data;
     
    try {
    	data = await client.search(Env.get('LDAP_BASE_DN'), opts);
    } catch (e) {
            console.error(error);
            return error;
    }
     
    let dn = data.entries[0].objectName;
    let userDetails = data.entries[0].object;
     
    let data2;
    try {
            data2 = await client.bind(dn, request.password);
    } catch (err2) {
            console.error(err2);
            return err2;
    }
     
    return data2 ||"hello world";
    Ma plateforme de formations digitales (développement Web, cybersécurité, SEO, Marketing digital)

    https://monformateurindependant.com

  5. #5
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    Super !!! Merci bien, ça fonctionne enfin. Je vais pouvoir virer tout mes callback que j'avais coder le temps de trouver la solution

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/11/2007, 18h17
  2. Comment retourné une valeur pour le main
    Par kurkLord dans le forum Langage
    Réponses: 3
    Dernier message: 31/05/2007, 23h20
  3. [C# 1.1] Comment retourner une ArrayList avec un WS ?
    Par pi05 dans le forum Services Web
    Réponses: 6
    Dernier message: 09/02/2007, 14h00
  4. Réponses: 5
    Dernier message: 15/02/2005, 19h07
  5. Comment retourner une table !
    Par ptidoudou02 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 14/12/2004, 15h46

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