我有一个猫鼬模式,在其中我通过调用函数为字段分配默认值。
我的模式
function fun(){
let curr_time = moment().format();
return curr_time;
};
let flagged_trans_schema = new Schema({
time: {type: Date, default: fun},
});
我在这里遇到一个问题,当我写default: fun()
时,时间字段没有更新时间,但是当我写default: fun
时,时间字段值每次都更新。
有人可以告诉我为什么会这样吗?
答案 0 :(得分:1)
使用default: fun()
将默认值设置为在声明架构时调用fun
函数的结果。仅一次,默认值将是所有新创建的模型实例(或者可能是数据库中未设置time
字段的文档的值)。
使用default: fun
会设置默认值来引用fun
函数,Mongoose非常聪明,知道这意味着每次创建新的模型实例时都应调用该函数。