2014-09-07 3 views
0

Je suis en train d'utiliser un test tel que décrit dans "mongoose-schema-extend"discriminateur mangouste trouver requête

Tout fonctionne comme il expliqué. Mais, je m'attendrais à ce qu'il me donne la possibilité de faire une requête de recherche sur le type hérité. Donc, si l'on considère l'exemple montré dans le lien ci-dessus:

var VehicleSchema = mongoose.Schema({ 
    make : String, 
}, { collection : 'vehicles', discriminatorKey : '_type' }); 

var CarSchema = VehicleSchema.extend({ 
    year : Number 
}); 
var BusSchema = VehicleSchema.extend({ 
    route : Number 
}) 

var Vehicle = mongoose.model('vehicle', VehicleSchema), 
    Car = mongoose.model('car', CarSchema), 
    Bus = mongoose.model('bus', BusSchema); 

var accord = new Car({ 
    make : 'Honda', 
    year : 1999 
}); 
var muni = new Bus({ 
    make : 'Neoplan', 
    route : 33 
}); 

Je me attends Car.find({}) pour revenir seulement les documents qui ont _type : Car. Au lieu de cela, je reçois tous vehicles.

Existe-t-il un moyen d'obtenir uniquement le cars à l'exception de Car.find{"_type":"Car"})?

Répondre

0

Vous devrez probablement faire une demande de fonctionnalité pour cela au propriétaire du paquet ou faire une demande d'extraction au projet vous-même. Un travail autour, cependant, pourrait consister à mettre en œuvre une méthode de recherche personnalisée:

CarSchema.statics._find = function(query, next) { 
    query._type = 'Car'; 
    this.find(query, next); 
} 

Car._find({}, function(err, cars) { 
    ... 
}; 

Le _find doit maintenant retourner uniquement les objets de voiture.

+0

La clé discriminante est une fonctionnalité prise en charge par Mongoose (mais pas du tout documentée). La question est de savoir s'il existe un moyen intégré de faire la requête. Si non alors je suppose que le propriétaire du paquet ne peut pas vraiment nous aider ... – skme

+0

@skme comment avez-vous fini par résoudre ce problème? –

+0

Aucune solution en vue .. vous pouvez utiliser ce que @materik a suggéré ... Numéro publié dans github mais toujours pas de réponse – skme