2013-03-14 10 views
6

Jeśli mam schematu w Mangusta, który jest zdefiniowany następująco:Czy można zdefiniować metodę instancji dla dokumentów podrzędnych w Mongoose?

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

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

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

Czy jest możliwe aby zdefiniować metodę instancji dla dokumentu sub? Próbowałem następujące (dodane przed deklaracji modelu), ale to nie działa:

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

Czy możesz rozwinąć "nie działa"? – JohnnyHK

+0

Właściwie to zorientowałem się, że to, co chciałem, nie działa, ale to, co faktycznie zrobiłem, działało. Potrzebna mi była funkcja, którą mogę użyć w zbiorze podokresów, tj. 'Topdoc.subs.someFn()' ale zadeklarowałem, że jest to 'topdoc.subs [i] .someFn()'. – wciu

+1

Ach, dobrze słyszałem, że zadziałało. – JohnnyHK

Odpowiedz

3

Odpowiedzi na moje własne pytanie.

Co Początkowo chciałem zrobić było stworzenie funkcji, które można wykorzystać w sprawie zbierania subdocs, jak w:

topdoc.subs.someFn(); 

Jednak to, co faktycznie z kodem w oryginalnym pytanie było stworzenie funkcja dla samego podrzędnego, jak w:

topdoc.subs[i].someFn(); 

To działa.

O ile mogę stwierdzić, tworzenie funkcji do gromadzenia subdocs nie jest obsługiwane przez Mongoose.

Obejmuję to, definiując metodę w topSchema, która zrobi to, co chcę.

+0

Dwa lata później szukam metody subdoc, która aktualizuje subdoc. Czy wiesz, czy to jest możliwe? 'this.save()' wydaje się nie działać. Zobacz: http://stackoverflow.com/questions/29998323 – Antrikshy

+0

Subdocs nie można zapisać, musisz zapisać rodzica. Funkcja ta.parent(). Save() powinna działać, ale trzeba ją przetestować. – wciu

+0

Odtąd odświeżyłem, ale teraz spróbuję tego. Jeśli zadziała, dam ci znać i możesz opublikować to jako odpowiedź. Wygląda obiecująco. Dzięki! – Antrikshy

Powiązane problemy