如果我将属性添加到 Mongoose 模式并为其提供默认值,现有文档在加载时会收到这些默认值吗?
问问题
1681 次
2 回答
9
是的,但如果查询是lean
.
对于返回完整 Mongoose 文档对象的查询——Thing.find({...})
无论何时更改架构,只要缺少该属性,就会返回默认值。如果随后保存该文档,则默认值将在数据库中实现。
如果查询是lean
– Thing.find({...}).lean()
– 查询只返回数据库中的内容,并且不包括任何新添加的默认值(除非文档已被加载并保存,如上所述)。
于 2016-01-28T16:09:02.173 回答
0
您可以自定义default
以忽略文档已经存在的情况。
取而代之的是default: Date.now
,即使未在数据库中设置,现有文档在获取时也会显示当前日期,您可以这样做:
default: function() {
if (this.isNew) {
return Date.now();
}
return void 0;
}
现在,没有在数据库中设置字段的现有文档在获取时不会设置它。
于 2017-12-15T01:23:18.930 回答