這個問題是類似於貓鼬架構: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公司,但這仍然會遇到同樣的問題。
有什麼建議嗎?