这个问题是类似于猫鼬架构:this question如何引用已尚未注册
与猫鼬的工作,我有一些像下面的代码。 (我用数字前缀了文件,所以我可以按照它们出现在“模型”目录中的顺序加载它们,但仍然控制加载顺序。)
在100-employee.server.model.js中:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var EmployeeSchema = new Schema({
name: {
type: String,
default: ''
},
company: {
type: Schema.ObjectId,
ref: 'Company'
},
subordinates: [EmployeeSchema],
});
mongoose.model('Employee', EmplyeeSchema);
然后,在200公司server.js,我有:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var CompanySchema = new Schema({
name: {
type: String,
default: ''
},
CEO: {
type: Schema.ObjectId,
ref: 'Employee'
}
});
mongoose.model('Company', CompanySchema);
显然,这是不行的,因为它是注册公司之前引用。而且,以相反的顺序加载这些文件也不会出于同样的原因。我需要的,就像是一个逻辑数据结构:
{
name: 'Acme, Inc',
CEO: {
name: 'Karen',
subordinates: [{
name: 'Bob',
subordinates: [{
name: 'Lisa',
subordinates: []
},
name: 'Jerry',
subordinates: []
}]
}]
}
}
(我想我得到了我所有的括号内的地方,我刚才输入的是JSON说明的必要。)
我可以只使用一个EmployeeSchema中'公司'的ObjectId,但它不能解决问题。我仍然收到公司尚未注册的投诉。
有人会问的使用情况,所以在这里它是:
我有一堆companies.I有一个公司的雇员的层次结构。而且,我有很多公司。对于每家公司,我都需要了解首席执行官,而不必搜索我的所有员工,找到没有父母的员工,该公司拥有ObjectId ref公司,但这仍然会遇到同样的问题。
有什么建议吗?