2012-05-10 18 views
6

Soy nuevo en Mongoose/nodejs y estoy luchando con una simple actualización de una matriz dentro de una matriz.¿Cómo actualizar en mangosta?

He aquí el esquema:

var County = new Schema({ 
_id     : Schema.ObjectId, 
name    : String, 
biggestCity   : String 
}); 

var Country = new Schema({ 
_id     : Schema.ObjectId, 
name    : String, 
counties    : {type: [County], ref: "County"} 
}); 

var Continent = new Schema({ 
    _id  : Schema.ObjectId, 
    countries : {type: [Country], ref: "Country"}, 
}); 

Y aquí está el código de actualización que he estado tratando:

var continents = mongoose.model("Continent"); 
var update = { "countries.counties.name": newName, "countries.counties.biggestCity": newBiggestCity }; 
var conditions = { "_id": countryId, "countries.name": countryName, "countries.counties.name": countyName }; 
var options = { multi: false }; 
wagers.update(conditions, update, options, function(err, numAffected) { 
    //callback code... 
}); 

Al hacer esto, el error en err dice "No se pueden agregar a la matriz usando string field name 'condados' ". ¿Qué significa esto? ¿Qué estoy haciendo mal?

Respuesta

1

Debe definir el objeto secundario como otro Esquema, no solo como una lista de algún objeto anónimo. (Reference.)

Intente definir Country como un Esquema separado, anótelo en Continent, luego haga su actualización.

+0

Ok. ¿No hay alguna forma alternativa de actualizar la matriz anidada, sin tener que volver a definir el esquema? – tremolo

+0

@tremolo: puede o no puede haber (mi Mongoose-fu todavía es débil), pero creo que es una buena práctica definir un esquema para 'País' de todos modos. – Ashe

+0

@tremolo: ¿podría actualizar su pregunta con el nuevo código? – Ashe

Cuestiones relacionadas