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 :

Route put avec nodejs express js


Sujet :

NodeJS

  1. #1
    Membre régulier
    Homme Profil pro
    En formation
    Inscrit en
    Juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : Juillet 2020
    Messages : 124
    Points : 78
    Points
    78
    Par défaut Route put avec nodejs express js
    Bonjour,

    J'ai une erreur sur ma route put lorsque j'essaye de modifié un utilisateur:
    (node:19528) UnhandledPromiseRejectionWarning: Error: data and salt arguments required
    j'utilise bcrypt. Je ne vois pas d'où peut bien venir l'erreur. J'ai essayé différentes choses que j'ai pu lire sur des forums mais ça ne fonctionne pas.
    Qui pourrait me dire d'où vient le problème ?
    Je vous remercie par avance.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    exports.modifyUser =  async (req, res, next) => {
        const id = parseInt(req.params.id)
        const { username , email, lastname, firstname } = req.body 
        const password_regex = /^(?=.*[0-9]+.*)(?=.*[a-zA-Z]+.*)[0-9a-zA-Z]{8,}$/; 
        const encryptedPassword = await bcrypt.hash(req.body.password, 10)
        const password = req.body.password
        connection.query('UPDATE users SET username = ?, email = ?, lastname = ?, firstname = ?, password = ? WHERE id =? ',[username, email, lastname, firstname ,encryptedPassword, id], (error, results) => {
            if (error) {
                res.status(401).json({err: 'la modification à échouée !' })
            }else{ 
                res.status(200).json({"Utilisateur modifié par": `${id}`}) 
            }        
        })  
    };

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Points : 168
    Points
    168
    Par défaut
    Bonjour,

    Le message d erreur indique qu'une promise 'reject' et l'erreur n'est pas attrapee. Utilise avec async/await les methodes retournant des promises doivent etre placees dans des try{}catch(e){}.
    Dans ce cas l'erreur provenant de bcrypt n'est pas attrapee. Ceci devrait resoudre le probleme.

    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
    exports.modifyUser =  async (req, res, next) => {
        try{
        const id = parseInt(req.params.id)
        const { username , email, lastname, firstname } = req.body 
        const password_regex = /^(?=.*[0-9]+.*)(?=.*[a-zA-Z]+.*)[0-9a-zA-Z]{8,}$/; 
        const encryptedPassword = await bcrypt.hash(req.body.password, 10)
        const password = req.body.password
        connection.query('UPDATE users SET username = ?, email = ?, lastname = ?, firstname = ?, password = ? WHERE id =? ',[username, email, lastname, firstname ,encryptedPassword, id], (error, results) => {
            if (error) {
                res.status(401).json({err: 'la modification à échouée !' })
            }else{ 
                res.status(200).json({"Utilisateur modifié par": `${id}`}) 
            }        
        })  
        } catch(err) {
         console.error('handle the err: ', err)
        }
    };
    Juste un truc en l'air, ici tu utilises le package 'bcrypt'(il me semble) mais pour qu'il fonctionne tu dois installer un compiler et build the dependencies:
    bcrypt is a native module for NodeJS, i.e, it uses native code to perform its work. The advantage of this over pure JS alternatives is speed. However, the disadvantage of this approach is it requires you to install a compiler and build dependencies in order to build.
    vois le lien github https://github.com/kelektiv/node.bcr...n-Instructions

    Pour un simple system d'authentification, il est souvent plus simple d'utiliser 'bcryptjs' https://www.npmjs.com/package/bcryptjs

  3. #3
    Membre régulier
    Homme Profil pro
    En formation
    Inscrit en
    Juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : Juillet 2020
    Messages : 124
    Points : 78
    Points
    78
    Par défaut
    Merci @djedjethai ca fonctionne .

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

Discussions similaires

  1. Routes post avec node js express mysql
    Par tony060 dans le forum NodeJS
    Réponses: 0
    Dernier message: 24/01/2021, 16h33
  2. like avec Nodejs et express
    Par tony060 dans le forum NodeJS
    Réponses: 0
    Dernier message: 19/12/2020, 16h01
  3. Réponses: 1
    Dernier message: 03/12/2017, 16h53
  4. Probleme avec l'expression d'un QRExpr
    Par smail21 dans le forum Bases de données
    Réponses: 3
    Dernier message: 31/07/2005, 10h19
  5. Requête avec l'expression Like
    Par Mvu dans le forum ASP
    Réponses: 3
    Dernier message: 02/09/2003, 10h39

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