繁体   English   中英

猫鼬:预先保存参考文件

[英]Mongoose: presave document with reference

如果该文档的_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)返回对象吗? 这似乎并不十分有效。

我调查了人口,但这似乎是现有的参考。

您可以使用.pre方法创建在保存之前运行的方法,然后将逻辑放入其中。 看起来像这样:

ModelB.pre('save', function(next) {
    // Check if id is available
    // if not run another method
    // run next() to exit
    next();
});

这将在您保存ModelB之前运行。

希望这会有所帮助,如果您添加更多信息,我也许能够提供更具体的解决方案。

您可以尝试使用填充。

填充是用其他集合中的文档自动替换文档中指定路径的过程

http://mongoosejs.com/docs/populate.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM