保存更新的ref字段时的猫鼬行为

时间:2016-06-26 14:22:46

标签: mongoose

我很欣赏在填充(或未填充)模型中更改ref值时对mongoose行为的一些见解。

假设我们有:

var CountrySchema = new Schema({
  _capital: { type: ObjectId, ref: City }
});

Country.findOne({}).populate('_capital').exec((err, country) => {
  /* CODE HERE */
  country.save((err, done);
});

如果我把

country._capital = { name: 'Paris'};

这将

    如果尚未设置_capital,则
  • 会导致CastError。 (运营商在JS,WTF中重载?)
  • 同样导致CastError,如果设置了_capital但是模型没有填充。
  • 如果设置了_capital并且填充了模型,则工作。引用的城市项目将被新的巴黎项目取代。引用的ObjectId(_capital)已更改,旧城市文档将从City集合中删除。

所有这一切对我来说并不陌生,我仍然想知道发生了什么,例如当

  • 将id而不是对象分配给填充的ref字段。
  • 使用objects / ids扩展填充的ref数组。
  • 从已填充的模型中删除ref值。

有系统性吗?这是错误的做事方式吗?它在文档中吗?

目前

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

http://mongoosejs.com/docs/3.8.x/docs/populate.html帮助不大。

在我自己测试之前,我想知道你们是否可以帮助我解决这个问题。

还有一个问题:我目前正在使用4.5.2。是否有某种推荐的LTS版本?

谢谢!

中号

0 个答案:

没有答案