如果文档的_id不能立即显示,那么保存文档并参考另一个集合的文档的最佳做法是什么?
var ModelA = new Schema({
aUniqueIdentifer: String,
...
)};
ModelA的aUniqueIdentifier由另一个数据源提供,并被其他模型用于识别它。
var ModelB = new Schema({
aUniqueForeignKey: type String,
aRef : {
type: mongoose.Schema.Types.ObjectID,
ref: 'ModelA'
}
)};
所以我可以保存一个modelA:modelA = new ModelA({aUniqueIdentifer: '500'});
然后为了保存mobdelB,我需要使用ModelA对象填充它的aRef。这样做的最佳做法是什么?在尝试保存之前,我应该执行findOne(aUniqueForeignKey)来返回对象吗?这看起来效率不高。
我查看了populate,但这似乎是针对现有的引用。
答案 0 :(得分:0)
您可以使用.pre方法创建一个在保存之前运行的方法,然后将您的逻辑放在其中。它看起来像这样:
ModelB.pre('save', function(next) {
// Check if id is available
// if not run another method
// run next() to exit
next();
});
这将在您保存ModelB之前运行。
希望这会有所帮助,如果您添加更多信息,我可以提供更具体的解决方案。
您可以尝试使用populate。
填充是使用其他集合中的文档自动替换文档中指定路径的过程