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 !