mongoose-schema-extend
을 사용하고 있기 때문에 간단한 '기본'스키마를 만들고 다른 스키마를 확장 할 수있는 것처럼 보입니다. 모든 항목을 검색하려면 기본 모델을 사용하십시오. 예를 들어
:
// base schema
var PersonSchema = new Schema({
name : String
}, {
collection : 'users', // everything will get saved in the same collection
discriminatorKey : '_type'
});
// two schema's that extend off it
var EmployeeSchema = PersonSchema.extend({ department : String });
var EmployerSchema = PersonSchema.extend({});
// materialize all three into models
var Person = mongoose.model('Person', PersonSchema);
var Employee = mongoose.model('Employee', EmployeeSchema);
var Employer = mongoose.model('Employer', EmployerSchema);
...
// create some people
new Employee({
name : 'Homer Simpson',
department : 'Safety'
}).save(...);
new Employer({
name : 'Charles Montgomery Burns',
}).save(...);
...
// search across employers and employees
Person.find({ ... }, function(err, people) {
...
});
는 그러나, 나는 find()
의 advertised behaviour 나를 위해 작동하지 않습니다 판별 키에 따라 올바른 모델 인스턴스를 반환하는 것을 말해야한다.
비슷한 질문 [여기] (http://stackoverflow.com/questions/14228882/inheritance-in-mongoose). 거기에 언급 된 [mongoose-schema-extend] (https://github.com/briankircho/mongoose-schema-extend)가 유용하게 들립니다. – robertklep
나는 이미 mongoose-schema-extend를 사용하여 스키마를 만들었지 만 내가 알 수있는 한이 문제에 도움이되는 것은 아무것도 제공하지 않는다. 내가 뭔가를 놓친다면 알려줘. – cbnz