save()忽略“updateAt”字段更改

时间:2018-05-28 17:01:48

标签: node.js mongodb typescript mongoose mocha

所以,我试图(单位)使用 mongoose mocha 测试一些功能。问题是,当我尝试save( )架构时, updatedAt 字段会被重写为当前时间。

即。我有以下申请人

const applicant: DataModel = new DataSchema({
        "user_name": "user_notifying2rejected",
        "uuid": "10",
        "status": "notifying_user",
        "request_origin": "127.0.0.10"
});

然后,我做

applicant.updatedAt = new Date(new Date() - 2.592e+8);

当我console.log(applicant.updateAt)时,我会得到正确的必要日期,基本上是“3天前”。

然后,像往常一样,我使用mongoose将其保存到数据库:

await application.save();

然而,当我尝试验证文档(我刚刚保存)时,我得到以下内容:

{
    createdAt: 2018-05-28T16:43:31.648Z,
    updatedAt: 2018-05-28T16:43:31.648Z,
    user_name: 'user_notifying2rejected',
    uuid: '10',
    request_origin: '127.0.0.10',
    _id: 5b0c31b06698440017d1593e,
    status: 'notifying_user'
}

现在 updatedAt 是今天的日期,而不是“3天前”,因为我想要它。如何阻止 mongoose mongoose.save 更改/覆盖我的 updatedAt 字段?

这是Schema。如果您还有其他需要,请告诉我。

模式

const DataSchema: Schema = new Schema({
    user_name: {
        type: String,
        required: true
    },
    uuid: {
        type: String,
        required: true
    },
    status: {
        type: String,
        required: true,
        default: "unprocessed"
    },
    request_origin: {
        type: String,
        required: true
    }
},
{
    timestamps: { createdAt: "createdAt", updatedAt: "updatedAt" }
});

1 个答案:

答案 0 :(得分:0)

如果您在申请人文档中更改updateAt,为什么要使用await application.save();