首页 > 解决方案 > save() 忽略“updateAt”字段更改

问题描述

所以,我正在尝试(单元)使用mongoosemocha测试一些功能。问题是,当我尝试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 天前”。如何阻止mongoosemongoose.save更改/覆盖我的updatedAt字段?

这是架构。需要帮助请叫我。

架构

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" }
});

标签: node.jsmongodbtypescriptmongoosemocha.js

解决方案


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


推荐阅读