2015-06-22 10 views
5

Załóżmy, że mam zagnieżdżony schemat (zaproszenie) w innym schemacie (element) i podczas próby zapisania obiektu zaproszenia, chcę sprawdzić, czy właściwość nadrzędna jest włączona ze schematu przedmiotu jest ustawiona wartość true lub false, zanim zezwolisz osobie na zapisanie obiektu zaproszenia do tablicy zaproszeń. Oczywiście plik this.enabled nie działa, ponieważ próbuje go usunąć z elementu inviteSchema, który nie istnieje. W jaki sposób można uzyskać właściwość "enabled" w schemacie nadrzędnym w celu sprawdzenia poprawności?Uzyskaj właściwość schematu nadrzędnego do sprawdzania poprawności za pomocą Mongoose i MongoDB

Jakieś myśli? Dzięki za pomoc!

var validateType = function(v) { 
    if (v === 'whateverCheck') { 
     return this.enabled || false; <== this doesn't work 
    } else { 
     return true; 
    } 
}; 

var invitationSchema = new Schema({ 
    name: { type: String }, 
    type: { 
     type: String, 
     validate: [validateType, 'error message.'] 
    } 
}); 

var itemSchema = new Schema({ 
    title: { type: String }, 
    description: { type: String }, 
    enabled: {type: Boolean}, <== trying to access this here 
    invitations: { type: [ invitationSchema ] }, 
}); 

var ItemModel = mongoose.model('Item', itemSchema, 'items'); 
var InvitationModel = mongoose.model('Invitation', invitationSchema); 

Odpowiedz

1

Rodzic z osadzonym dokumentu jest dostępny z wbudowanym doc instancji modelu dzwoniąc instance.parent();. Możesz to zrobić z dowolnego oprogramowania pośredniego Mongoose, takiego jak walidator lub hak.

W twoim przypadku można zrobić:

var validateType = function(v) { 
    if (v === 'whateverCheck') { 
     return this.parent().enabled || false; // <== this does work 
    } else { 
     return true; 
    } 
};