我正在更新我们的包依赖关系,并从Mongoose 5.x迁移到8.x。在从5迁移到6的文档中,有关于不需要markModified
的说明:
Mongoose数组现在是ES6代理。您不再需要在直接设置数组索引后使用markModified()。
来源:https://mongoosejs.com/docs/migrating_to_6.html#arrays-are-proxies
然而,在Mongoose 8的文档中,仍然有对markModified的引用:https://mongoosejs.com/docs/api/document.html#Document.prototype.markModified()
我并不完全清楚哪些场景可以安全地删除markModified
,哪些场景不可以。删除所有引用安全吗?或者如果markModified
行不再有效,最好保留它们?
1条答案
按热度按时间omtl5h9j1#
这张很模糊我记得是这样的
1.版本密钥仅在数组更改时更新。
1.只有当你使用
document.save()
的时候,版本密钥才会被更新。像Model.findOneAndUpdate()
或Model.findByIdAndUpdate()
等方法不会在数组改变的时候更新版本密钥。1.您不需要
markModified()
。如果您使用以下任一项修改数组字段:字符串
1.如果使用方括号表示法设置数组元素,则确实需要
markModified()
:型
第4点与v5 -> v6迁移文档所说的相反,但在v7和v8中是正确的。