Mongoose 默认值使用时必须知道的几个要点
Mongoose 的文档中对 default
的介绍不多,导致在使用中可能会遇到一些bug,因此做一个总结。
设置 default
假设我们需要对某个字段赋予默认值,可以通过如下方式进行定义:
1 | const schema = new Schema({ |
default 定义有如下特点:
default 可以是值,也可以是 function
default 当是值类型时,会被 mongoose 缓存
mongoose 在 model 初始化后,会缓存默认默认值,所以,如果默认时是一些实时的数据,比如时间,则要将
default
赋值为 function。
更新 default
当在 update()
和 findOneAndUpdate()
中使用
upsert
选项时,Mongoose
会给没有值的默认字段设置默认值。
如果发现没更新默认值,可以传入参数setDefaultsOnInsert: true
来触发。
default 函数中的 this
default 函数中的 this 默认指向当前文档,因此可以在定义中通过自身参数来返回不同的默认值,比如:
1 | const schema = new Schema({ |