2017-08-12 2 views
0

Lorsque je crée une nouvelle instance de mon utilisateur avec Sequelize, j'obtiens l'objet complet renvoyé de la base de données en réponse à la création. J'essaye d'empêcher Sequelize de retourner le mot de passe hashed stocké dans ma table d'utilisateur sur créer. J'ai essayé d'utiliser la propriété exclude, mais l'objet complet est renvoyé.Sequelize: Ne pas retourner le mot de passe sur Créer

exports.create = (payload, err, success) => { 
    db.user.create(payload, { 
    attributes: { 
     exclude: ['password'] 
    } 
    }).then(success).catch(err); 
    console.log('Created new user record.'); 
}; 

Je suis en mesure d'utiliser la propriété exclure des attributs sur ma trouvaille et les routes findAll comme l'exemple ci-dessous, mais je n'ai pas été en mesure d'obtenir à travailler avec ma création.

exports.find = (payload, err, success) => { 
    db.user.find({ 
    where: { 
    id: payload.id, 
    }, 
    attributes: { 
     exclude: ['password'] 
    } 
    }).then(success).catch(err); 
    console.log('Retrieved user record with id: ' + payload.id); 
}; 
+0

double possible de [Sequelize: ne pas revenir mot de passe] (https://stackoverflow.com/questions/27972271/sequelize-dont-return-password) – mscheker

Répondre

1

Vous pouvez essayer d'utiliser la méthode toJSON d'instance pour exclure les attributs:

Modèle:

instanceMethods: { 
     toJSON: function() { 
      const userObj = Object.assign({}, this.dataValues); 

      delete userObj.password; 

      return userObj 
     } 
} 

fichier Route:

user.create(request.body, (err) => { 
    res.status(500).json(err); 
    console.log('Error creating new user.'); 
}, (data) => { 
    res.status(200).json(data.toJSON()); 
    console.log('User created.'); 
}); 
+0

L'objet retourné est le même avec le mot de passe lors de l'ajout à mon modèle d'utilisateur créer. Ou est-ce que je l'ajouterais ailleurs? Pour le sequelize.define peut-être? – Wheezykw

+0

@Wheezykw Appelez-vous la méthode toJSON à partir de votre instance d'utilisateur? 'user.toJSON();' –

+0

J'ai ajouté le instanceMethods à l'instance User dans mon modèle. Dans mon itinéraire express, je fais ce qui suit: 'user.create (request.body, (err) => { res.status (500) .json (err); console.log ('Erreur lors de la création d'un nouvel utilisateur .) }, (données) => { res.status (200) .json (données); console.log ('Utilisateur créé.') }); ' – Wheezykw