Node.js 可以同时搜索多个猫鼬模型吗?

Node.js 可以同时搜索多个猫鼬模型吗?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有四种猫鼬模型,SoleTrader,Partnership,Company和Trust。它们非常不同,我无法将它们全部合并到一个模式中,但它们非常相似,我经常需要一次查询或更改所有4种类型,很少关心它们是哪种类型 有没有一种方法可以做到这一点——可能是将所有四种类型放在一个集合中——而不必每次调用四个数据库?因为您正在使用,似乎可以创建一个简单的“基本”模式,并扩展其他模式。如果要在所有模型中进行搜索,请使用基础模型 例如: // base schema var PersonSchema =

我有四种猫鼬模型,
SoleTrader
Partnership
Company
Trust
。它们非常不同,我无法将它们全部合并到一个模式中,但它们非常相似,我经常需要一次查询或更改所有4种类型,很少关心它们是哪种类型

有没有一种方法可以做到这一点——可能是将所有四种类型放在一个集合中——而不必每次调用四个数据库?

因为您正在使用,似乎可以创建一个简单的“基本”模式,并扩展其他模式。如果要在所有模型中进行搜索,请使用基础模型

例如:

// 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()
方法对我不起作用。

类似的问题。上面提到的方法听起来很有用。我已经在使用mongoose schema extend来创建模式,但据我所知,它没有提供任何有助于解决此问题的方法。如果我遗漏了什么,请告诉我。这篇文章可能会帮助你,谢谢,这很有效。我从未想到过将基本模式保存为模型的想法;我只保存了它的扩展。不过,我的鉴别器键也有同样的问题。它根本没有被保存。@cbnz在我的例子中,密钥被保存到数据库中,但它没有被用来将结果“强制转换”到正确的模型中。我将提交错误报告:)