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

  1. #1
    Membre régulier
    Inscrit en
    avril 2007
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 113
    Points : 75
    Points
    75

    Par défaut Expoiter le retour d'une promesse

    Bonjour,

    J'ai commencé a utiliser typescript avec loopback 4, comme toute leur architecture a été refondue avec cette nouvelle version... Cependant la documentation est encore malheureusement tres pauvre. Je suis confronté a un probleme de langage que j'ai du mal a résoudre !

    J'ai un controleur avec une methode login qui fait appel a une methode renvoyant une promesse, qui donne cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     #controller
    async login(@requestBody() parameters: {'email': string, 'password': string}): Promise<User> {
        return await this.userRepository.authenticate(parameters.email, parameters.password);
      }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #UserRepository
     
      authenticate(email: string, password: string): Promise<User> {
        return this.findOne({'where': {'email': email}}).then(function(err: any, user: any): User | null {
          if (user) {
            if (bcrypt.compareSync(password, user.__data.password)) {
              return user;
            }
            return user;
          } else {
            return null;
          }
        });
      }
    Et l'erreur que j'obtiens est :

    user.repository.ts:19:59 - error TS2345: Argument of type '(err: any, user: any) => User | null' is not assignable to parameter of type '(value: User | null) => User | PromiseLike<User | null> | null'.

    19 return this.findOne({'where': {'email': email}}).then(function(err: any, user: any): User | null {
    ~~~~~~~~
    Found 1 error.
    J'avoue que j'ai pas mal bidouillé la methode authenticate mais je ne vois toujours pas comment renvoyer correctement une promesse de type User or null (ou array) en decrivant les parametres correctement...

    Merci pour vos réponses !

  2. #2
    Membre confirmé
    Avatar de Paleo
    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2013
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : septembre 2013
    Messages : 228
    Points : 624
    Points
    624

    Par défaut

    Bonjour,

    L'erreur est décrite dans le message d'erreur. La fonction "function(err: any, user: any)" reçoit deux paramètres mais elle devrait recevoir un unique paramètre : "function(user: User | null)".

    Cela dit, le code serait plus lisible avec async et await :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      async authenticate(email: string, password: string): Promise<User | null> {
        let user = await this.findOne({'where': {'email': email}});
        if (user) {
          if (bcrypt.compareSync(password, user.__data.password)) {
            return user;
          }
          return user;
        } else {
          return null;
        }
      }

  3. #3
    Membre régulier
    Inscrit en
    avril 2007
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 113
    Points : 75
    Points
    75

    Par défaut

    Merci pour ta réponse ! Ca m'a permis de faire ce que je veux. J'avoue avoir eu du mal a comprendre le message d'erreur !

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

Discussions similaires

  1. [Débutant - Informix] Retour Chariot
    Par PonGe dans le forum Informix
    Réponses: 2
    Dernier message: 09/07/2010, 14h12
  2. Réponses: 22
    Dernier message: 18/04/2008, 12h05
  3. [débutant] Gestion retour à la ligne d'une String dans une JSP
    Par caballero dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 26/02/2008, 12h14
  4. débutante c#: retour à la ligne
    Par psycho_xn dans le forum C#
    Réponses: 15
    Dernier message: 31/01/2008, 14h22
  5. [Débutant] KeyListener (touche Retour)
    Par dib258 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 21/01/2006, 23h28

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