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 :

Expoiter le retour d'une promesse


Sujet :

TypeScript

  1. #1
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 115
    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 éclairé
    Avatar de Paleo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2013
    Messages : 242
    Points : 661
    Points
    661
    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
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 115
    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. [Débutant]Suppression retour chariot dans un fichier texte.
    Par Baban29 dans le forum Entrée/Sortie
    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