2013-03-14 15 views
6

Se ho un uno schema in Mongoose che è definito come:È possibile definire il metodo di istanza per i documenti secondari in Mongoose?

var subSchema = new Schema({ 
    some: String 
}); 

var topSchema = new Schema({ 
    subs: [subSchema] 
}); 

var topModel = mongoose.model("Top", topSchema); 

E 'possibile definire un metodo di istanza per il documento sub? Ho provato quanto segue (aggiunta prima della dichiarazione modello), ma non funziona:

subSchema.methods.someFn = function() { 
    return 'blah'; 
}; 
+0

Puoi espandere "non funziona"? – JohnnyHK

+0

In realtà, ho capito che quello che volevo fare non funzionava, ma quello che effettivamente funzionava. Quello che volevo era una funzione che posso usare sulla collezione dei sottodoc, cioè 'topdoc.subs.someFn()', ma quello che ho effettivamente dichiarato è 'topdoc.subs [i] .someFn()'. – wciu

+1

Ah, bello sentire che ha funzionato. – JohnnyHK

risposta

3

Rispondendo alla mia domanda.

Quello che inizialmente volevo fare era quello di creare una funzione che può essere utilizzata per la raccolta di Subdocs, come in:

topdoc.subs.someFn(); 

Tuttavia, ciò che in realtà ho fatto con il codice nella domanda iniziale era creare una funzione per un subdoc stesso, come in:

topdoc.subs[i].someFn(); 

Questo funziona.

Per quanto posso dire, la creazione di una funzione per la raccolta di sottodoc non è supportata da Mongoose.

Ho aggirato questo definendo un metodo in topSchema che farebbe ciò che voglio.

+0

Due anni dopo, sto cercando di creare un metodo di istanza subdoc che aggiorni il subdoc. Sai se è possibile? 'this.save()' non sembra funzionare. Vedi: http://stackoverflow.com/questions/29998323 – Antrikshy

+0

I sottodoc non possono essere salvati, è necessario salvare il genitore. Quindi this.parent(). Save() dovrebbe funzionare, ma sarà necessario testarlo. – wciu

+0

Da allora ho refactored, ma ora proverò questo. Se funziona ti farò sapere e puoi postarlo come risposta. Sembra promettente. Grazie! – Antrikshy

Problemi correlati