2012-09-28 18 views
6

Tengo un esquema de mangosta con un subdocumento. Tanto el esquema padre como el esquema hijo tienen ganchos guardados previamente. Por ejemplo:Guardado previo de mangoose middleware del subdocumento no llamado en la segunda operación de guardado

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var SubSchema = new Schema({ x : Number }); 
SubSchema.pre('save', function (next) { 
    console.log("pre save Sub"); 
    next(); 
}); 

var MainSchema = new Schema({ x : Number, children : [SubSchema] }); 
MainSchema.pre('save', function (next) { 
    console.log("pre save Main"); 
    next(); 
}); 
var Main = mongoose.model('Main', MainSchema); 

var m = new Main(); 
m.children.push({ x : 42 }); 

m.save(function(err, doc) { 
    console.log(doc +"\n\n"); 
    doc.children[0].x = 43; 

    doc.save(function(err, doc2) { 
    console.log(doc2 + "\n\n"); 
    }); 
}); 

Cuando ejecuto el código, me sale el siguiente resultado:

pre save Sub 
pre save Main 
{ __v: 0, 
    _id: 50660b319aec895a50000002, 
    children: [ { x: 42, _id: 50660b319aec895a50000003 } ] } 


pre save Main 
{ __v: 0, 
    _id: 50660b319aec895a50000002, 
    children: [ { x: 43, _id: 50660b319aec895a50000003 } ] } 

Cualquier razón por la pre Guardar gancho no se está ejecutando para el subdocumento en la segunda operación de almacenamiento?

Respuesta

11

Este se fija en v3.2.0, por lo que le permite hacer esto:

doc.children.set(0, {x: 43}) 
doc.save() 
+0

Gracias! Eso funcionó en 3.2.0 – bryanpackman

+0

También se apreciaría un voto positivo;) – staackuser2

+0

Ahora solo tengo 13 puntos de rep. Tan pronto como obtenga 2 más, votaré su respuesta. – bryanpackman

Cuestiones relacionadas