2011-07-17 7 views
4

En utilisant Mongoose avec MongoDB et Node.jsMongoose "setter" agissant comme "getter"?

Auparavant, j'avais mon UserSchema défini comme ceci:

var UserSchema = new Schema({ 
    username:  { type: String, unique: true }, 
    password:  String, 
    email:  { type: Email, unique: true, validate:/^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ } 
}); 

Quand mon utilisateur a été créé, je crypté le mot de passe. Ensuite, j'ai découvert « setters » et j'ai changé UserSchema à ceci:

var UserSchema = new Schema({ 
    username:  { type: String, unique: true }, 
    password:  { type:String, set:encryption.Encrypt }, 
    email:  { type: Email, unique: true, validate:/^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ } 
}); 

J'ai fait aucun autre changement (que je me souvienne) et en essayant de se connecter avec un utilisateur j'ai découvert que mon mot de passe était faux. Lorsque j'ai regardé les données, le mot de passe chiffré renvoyé à partir de la base de données était différent de celui stocké dans la base de données. Si je sors le "setter" de mon UserSchema, il semble correct.

Maintenant, mon problème est que « setters » sont décrits comme ceci:

Comme vous pouvez le voir ci-dessus, setters vous permettent de transformer les données avant de il obtient le document de MongoDB brut et est réglé en tant que valeur sur une clé réelle .

Pour moi, il semble que ce Setter fonctionne comme un Getter et transforme les données quand il revient de la base de données.

Est-ce que je me trompe complètement?

+0

Je ne sais pas ce qui se passe, mais avez-vous essayé la comparaison user.password à user.doc.password (qui devrait être le document mongo cru)? –

Répondre

5

C'était en fait un bug dans mangouste qui a depuis été corrigé dans Mongoose 2.0