2011-05-30 4 views
11

J'ai des données MongoDB qui ressemble à ceci:Est-ce que Mongoose prend uniquement en charge les documents incorporés dans les tableaux?

{ 
    name: "Steve", 
    location: { 
     city: "Nowhere, IL", 
     country: "The United States of Awesome" 
    } 
} 

j'utilise des objets pour organiser des structures de données communes (comme les endroits), qui Mongoose pourrait bien à cartographier Schemas. Malheureusement, ils ne semblent pas vraiment fonctionner dans Mongoose.

Si je viens incorporez un objet, comme ceci:

{ 
    name: String, 
    location: { 
     city: String, 
     country: String 
    } 
} 

Il semble fonctionner, mais présente un comportement bizarre qui provoque des problèmes pour moi (par exemple instance.location.location retourne location et sous-objets héritent des méthodes du schéma parent). Je started a thread sur la liste Mongoose, mais il n'a vu aucune action.

Si j'incorporez un schéma, comme ceci:

{ 
    name: String, 
    location: new Schema({ 
     city: String, 
     country: String 
    }) 
} 

... mon application ne démarre pas (Schema est pas un type pris en charge par Mongoose). Idem pour

{ 
    name: String, 
    location: Object 
} 

... ce qui ne serait pas idéal, quoi qu'il en soit. Est-ce que je manque quelque chose ou que mes schémas ne jive pas avec Mongoose?

+1

Regardez la documentation ici -> http://mongoosejs.com/docs/embedded-documents.html. –

+1

@Andrew J'ai. Que me montrez-vous? J'ai remarqué qu'il est écrit: * "Les documents incorporés sont des documents avec leurs propres schémas qui font partie d'autres documents (comme éléments dans un tableau)." * Cela signifie-t-il que Mongoose ne supporte pas les schémas comme le mien? – s4y

Répondre

1

Il ressemble à ce was a bug, il a été fixé dans Mongoose 2.0!

3

quelque chose de similaire j'ai fait:

var Topic = new Schema({ 
     author : ObjectId 
    , title  : String 
    , body  : String 
    , topics : [Topic] 
}); 

Cela a bien fonctionné dans mes tests. Toutefois, la suppression des tableaux de bord a entraîné une erreur. On dirait un bug pour moi.

https://github.com/LearnBoost/mongoose/blob/master/lib/mongoose/schema.js#L185

types de dumping, je reçois que String, Number, Boolean, DocumentArray, Array, Date, ObjectId, mixte - qui semble être sur le but, le schéma/index.js ne ressemble pas enregistre dynamiquement de nouveaux schémas à la liste des types, donc je suppose que ce n'est pas un cas d'utilisation supporté, pour le moment.

https://github.com/LearnBoost/mongoose/issues/188

"Intégration unique docs est hors de question. Ce n'est pas une bonne idée (il suffit d'utiliser des objets imbriqués réguliers)"

Josh

+0

Intéressant! Donc, il semble que "les objets imbriqués réguliers" (la première chose que j'ai essayé) en ont aussi brisés. Je viens de [déposer un problème] (https://github.com/LearnBoost/mongoose/issues/366). – s4y

Questions connexes