Javascript supprimer la propriété de l'objet ne fonctionne pas
Je suis en cours d'exécution de certains projets sur MEAN.js et j'ai un problème suivant. Je veux faire de l'utilisateur le profil du calcul et de l'enregistrer dans la base de données. Mais il y a un problème avec la méthode des utilisateurs modèle:
UserSchema.pre('save', function(next) {
if (this.password && this.password.length > 6) {
this.salt = new Buffer(crypto.randomBytes(16).toString('base64'), 'base64');
this.password = this.hashPassword(this.password);
}
next();
});
Si je vais envoyer un mot de passe avec mes modifications, il va modifier les informations d'identification, de sorte que l'utilisateur est impossible de se connecter la prochaine fois. Je veux supprimer le mot de passe de l'utilisateur de l'objet avant de l'enregistrer, mais je ne suis pas en mesure de le faire (regardons les commentaires dans mon code ci-dessous):
exports.signin = function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err || !user) {
res.status(400).send(info);
} else {
/* Some calculations and user's object changes */
req.login(user, function(err) {
if(err) {
res.status(400).send(err);
} else {
console.log(delete user.password); //returns true
console.log(user.password); //still returns password :(
//user.save();
//res.json(user);
}
});
}
})(req, res, next);
};
Quel est le problème? Pourquoi la suppression de la méthode renvoie true, mais rien ne se passe? Merci pour votre aide 🙂
'use strict';
est la première ligne de mon fichier contrôleur. Mais comment puis-je supprimer le mot de passe de la propriété?Il semble peu probable d'être le cas, mais avez-vous vérifié si le
password
propriété est en fait une propriété de la user
objet et ne vient pas de quelqu'un sur la chaîne de prototype (hasOwnProperty)? Le paramètre undefined
ne sera pas suffisant (désolé, pas d'expérience avec une moyenne de-pile)? Aussi loin que l'encodage json va il devrait y avoir aucune différence dans le résultat.nope, la définition de la propriété non définie ne fonctionne pas ... hasOwnProperty retourné false, comme vous l'avez prévu
OriginalL'auteur ketysek | 2015-10-20
Vous devez vous connecter pour publier un commentaire.
il y a certaines règles pour l'opérateur d'effacement en javascript
par exemple
par exemple
veuillez vérifier ces points et pour plus d'informations, vous pouvez lire ce Lien
delete User.prototype.password;
fonctionne 🙂OriginalL'auteur Virendra yadav