2012-05-29 16 views
0

ici est mon code pour models.js où je garde les modèlesmodèles emboîtés Mongoose avec nodejs génère des doublons

var mongoose = require('mongoose') 
, Schema = mongoose.Schema; 
var GroupSchema = new Schema({ 
    title  : String 
    , elements : [ElementSchema] 
    , author  : String 
}); 
var ElementSchema = new Schema({ 
    date_added : Date 
    , text  : String 
    , author  : String 
}); 
mongoose.model('Group', GroupSchema); 
exports.Group = function(db) {return db.model('Group');}; 

mongoose.model('Element', ElementSchema); 
exports.Element = function(db) { return db.model('Element'); 
}; 

Pour moi, il semble assez clair, mais quand je fais

function post_element(req, res, next) { 
Group.findOne({_id: req.body.group}, function(err, group) { 
    new_element = new Element({author: req.body.author, 
     date_added: new Date()}); 
     new_element.save(); 
     group.elements.push(new_element); 
     group.save(); 
    res.send(new_element); 
    return next(); 
}) 
} 

Je ne Je comprends pourquoi quand je vais à Mongo, j'ai deux collections appelées groupes avec des groupes imbriqués (donc ça a l'air bien) et l'autre collection s'appelle Elements.

Pourquoi? Ne devrait-il pas s'appeler seulement Groupe? Je ne comprends pas, un bon gars qui s'il vous plaît m'expliquer?

Merci, g

Répondre

1

Lorsque vous exécutez cette ligne:

new_element.save(); 

vous enregistrez l'élément nouvellement créé à la collection Elements. N'appelez pas save sur l'élément et je pense que vous obtiendrez le comportement que vous recherchez.

+0

mais dans ce cas, quel sera le point d'avoir deux schémas séparés? – nick

+0

Il semble qu'avec Mongoose, si vous voulez un tableau d'objets dans votre schéma, ces objets doivent être définis en utilisant un schéma (ou être l'un des types de schémas intégrés). – JohnnyHK

0

Son en raison de la ligne suivante:

mongoose.model('Element', ElementSchema); 

Enregistre un modèle mangouste et lorsque vous enregistrez un modèle, il va créer sa propre collection à l'intérieur mongo. Tout ce que vous avez à faire est de vous débarrasser de cette ligne et vous la verrez disparaître.

Sur une autre note, son plus propre et plus facile à configurer vos fichiers seulement exporter un modèle par fichier en utilisant ce qui suit pour exporter le modèle:

module.exports = mongoose.model('Group', GroupSchema); 

Hope this helps!

Questions connexes