2013-08-31 4 views
0

J'ai un problème pour enregistrer un objet json dans mongodb (Mongoose) donc quand je fais l'insertion tout est ok, mais quand je fais la requête du même objet, Mongoose retourne un objet modifié Json. C'est comme la saisie semi-automatique Mongoose le champ Twitter et je ne sais pas pourquoi.Différence entre save/load json object dans Mongoose

Voici mon code:

UserSchema = mongoose.Schema({ 
firstName: String, 
lastName: String, 
email:  String, 
salt:  String, 
hash:  String, 
twitter:{ 
    id:  String, 
    email: String, 
    name:  String 
}, 
facebook:{ 
    id:  String, 
    email: String, 
    name:  String, 
    username: String, 
    photo: String, 
    gender: String 
} 
}); 

Je sauve JSON dans ma base de données:

User.create({ 
     email : profile.emails[0].value, 
     facebook : { 
      id: profile.id, 
      email: profile.emails[0].value, 
      name: profile.displayName, 
      username: profile.username, 
      photo: profile.photos[0].value, 
      gender: profile.gender 
      } 
     }, function(err, user){ 
      if(err) throw err; 
      // if (err) return done(err); 
      done(null, user); 
     }); 

Mais je quand mangouste un retour JSON.

enter image description here

mangouste généré un champ dans la json. twitter: {} < ----

Je ne sais pas pourquoi, quelqu'un peut-il me donner un coup de main?

Répondre

1

Si vous regardez le document enregistré dans MongoDB, vous verrez que l'objet twitter n'est réellement présent que si les propriétés du sous-objet sont définies. L'objet est créé afin que vous puissiez facilement définir les propriétés sans avoir à vous soucier de la création de l'objet sub/imbriqué. Ainsi, vous pouvez le faire:

var user = new User(); 
user.twitter.id = 'wiredprairie'; 
user.save(); 

Résultats:

{ "_id" : ObjectId("522259394eb9ed0c30000002"), 
    "twitter" : { "id" : "wiredprairie" }, "__v" : 0 } 

Et si vous êtes allé un peu plus loin et je voulais une vision plus « pure » des données, vous pouvez utiliser toJSON sur l'instance de modèle Mongoose :

console.log(user.toJSON()); 

résultats:

{ _id: 522259ad3621834411000001, twitter: { id: 'wiredprairie' } } 
+0

J'ai résolu le problème avec votre réponse, j'ai utilisé la fonction JSON et son travail bien. Merci – slorenzo

Questions connexes