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); }Et l'erreur que j'obtiens est :
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; } }); }
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...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.
Merci pour vos réponses !
Partager