假设我有两个模式
A: {
someStuff: String,
children: [{ type: ObjectId, ref: 'B' }]
},
B: {
someOtherStuff: String,
parent: { type: ObjectId, ref: 'A' }
}
我更愿意把参考文献写成:
A: {
children: [{ type: ObjectId, ref: modelB.collection.name }]
...
},
B: {
parent: { type: ObjectId, ref: modelA.collection.name }
...
}
但是,这将给我一个循环依赖性错误。
有没有办法解决这个问题,或者我必须坚持使用硬编码的集合名称?
我不认为有办法直接绕过它,但如果您非常反对硬编码的集合名称,则有可能绕过它。
您可以将名称存储在一个单独的文件中,并让模型和引用都使用它
例如
model-names.js
{
ModelA: 'ModelA',
ModelB: 'ModelB',
}
那么在CCD_ 1中;编译";具有mongoose.model(Names.ModelA)
和参考Names.ModelB
的模型
我不确定我是否会鼓励大多数项目这样做,因为这会增加一些复杂性,但我可以想象一些具有更动态模型名称的用例,在这些用例中,只在一个位置进行更改会很好。