Mongoose 保存更新的参考字段时的猫鼬行为
在填充(或未填充)模型中更改ref值时,我希望能够了解mongoose的行为 假设我们有:Mongoose 保存更新的参考字段时的猫鼬行为,mongoose,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); }); 如果我把
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'};
这将
- 如果资本尚未设定,则会导致错误。(JS、WTF中的运算符重载?)
- 如果设置了_capital但未填充模型,则同样会导致CastError
- 如果设置了_capital并且填充了模型,则工作。引用的城市项目将替换为新的巴黎项目。引用的ObjectId(_大写)已更改,旧的城市文档将从城市集合中删除
- 将ID而不是对象指定给填充的ref字段
- 使用对象/ID扩展填充的ref数组
- 从填充的模型中删除参考值