假设我有两个模式
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 }
...
}
但是,这会给予循环依赖错误。
有没有办法解决这个问题,或者我必须坚持使用硬编码的集合名称?
1条答案
按热度按时间xwbd5t1u1#
我不认为有直接的方法可以解决这个问题,但是如果你非常反对硬编码的集合名称的话,有一个可能的解决方法。
可以将名称存储在单独的文件中,并让模型和引用都使用它。
例如:
然后在
model-a.js
中,您可以让它使用mongoose.model(Names.ModelA)
“编译”模型并引用Names.ModelB
我不确定我是否会鼓励大多数项目这样做,因为这会增加一些复杂性,但我可以想象一些使用更多动态模型名称的用例,在这些用例中,只在一个位置进行更改会很好。