猫鼬呼叫功能的默认值

时间:2019-01-01 21:15:34

标签: node.js mongoose

我有一个猫鼬模式,在其中我通过调用函数为字段分配默认值。

我的模式

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时,时间字段值每次都更新。

有人可以告诉我为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

使用default: fun()将默认值设置为在声明架构时调用fun函数的结果。仅一次,默认值将是所有新创建的模型实例(或者可能是数据库中未设置time字段的文档的值)。

使用default: fun会设置默认值来引用fun函数,Mongoose非常聪明,知道这意味着每次创建新的模型实例时都应调用该函数。