我有四个猫鼬模型,SoleTrader
,Partnership
,Company
和Trust
。它们之间的差异足够大,以至于我无法将它们全部合并为一个架构,但又如此相似,以至于我经常需要一次查询或对所有4种类型进行更改,而很少关心它们是哪种类型。
有没有一种方法(可能通过将所有四种类型放在一个集合中)而不必每次都进行四个数据库调用?
由于您正在使用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()
根据鉴别键返回正确的模型实例并不为我工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句