Quel est le modèle approprié pour les schémas nesteds dans Mongoose / MongoDB?

Il me semble logique de faire quelque chose comme ceci:

var AvatarSchema = new Mongoose.Schema({ type: Ssortingng, url: Ssortingng }); var UserSchema = new Mongoose.Schema({ avatars: [AvatarSchema], email: Ssortingng, name: Ssortingng, salt: Ssortingng, token: Ssortingng }); var ThinUserSchema = new Mongoose.Schema({ avatars: [AvatarSchema], email: Ssortingng, firstname: Ssortingng, lastname: Ssortingng, }); var QuestionSchema = new Mongoose.Schema({ question: Ssortingng, users: [ThinUserSchema] }); 

Puis plus tard. . Faites quelque chose comme ceci:

 var question = new Question({ question: 'Wut?', users: users //where users is an array of instances of a user model of the UserSchema }); 

Ici, je pense que la section des utilisateurs de la question sera peuplée d’avatars, de courriels, de prénoms et de noms de famille. . Cependant, puisque les utilisateurs / avatars ont déjà _id, ils ne sont pas persistés.

  • Supprimer chaque id de l’utilisateur / avatars semble idiot.
  • Configurer explicitement chaque utilisateur / avatar semble inefficace.
  • Le passage à un type mixte place TOUT dans la liste et nécessite markModified.

Quel est le modèle approprié pour ces sortes de schémas?

Merci!

Je suis encore une mongoose et si je comprends bien, je pense que vous devez lire ceci: http://mongoosejs.com/docs/populate.html

Il existe un exemple très simple et agréable dans lequel vous avez référencé des schémas dans d’autres schémas. Donc, pour inclure un document d’un schéma particulier dans un autre, il est préférable de l’inclure via référence. Lorsque vous en avez besoin, vous appelez Populate sur le document parent. Lorsque vous modifiez un document enfant, le parent renseigné changera également, bien sûr.

Je pense que vos hypothèses sont correctes, il s’appelle Embedded documents in Mongoose.

 var Comments = new Schema({ title : Ssortingng , body : Ssortingng , date : Date }); var BlogPost = new Schema({ author : ObjectId , title : Ssortingng , body : Ssortingng , date : Date , comments : [Comments] , meta : { votes : Number , favs : Number } }); mongoose.model('BlogPost', BlogPost); 

Avertissement: Je ne mettrais pas nécessairement la virgule avant les éléments!