Mongoose Schema扩展时间戳以获得新属性(用户名)

时间:2017-07-05 22:10:11

标签: javascript node.js mongoose mongoose-schema

我正在使用MongoDBmongoose来处理需要跟踪数据创建和更改的项目。要求是我需要跟踪记录的创建和更改,包括执行它的日期/时间和应用程序用户(而不是操作系统用户)。

我已经看到了可以解决我的日期/时间问题的mongoose this answer for more information选项,但有没有办法扩展它以包含额外的属性,我将添加应用程序用户名?

如果没有,是否有一个地方我可以编写一个将在每次创建/更新时调用的函数,以便我可以包含/修改这些字段?

今天我在下面的每个模型中都会使用这些属性,但我想将它们全部移到一个地方。

var companySchema = mongoose.Schema({

    name: {
        type: String,
        index: true
    },
    phone: {
        type: String
    },
    deleted: {
        type: Boolean
    },
    createdAt: {
        type: Date
    },
    createdBy: {
        type: String
    },
    updatedAt: {
        type: Date
    },
    updatedBy: {
        type: String
    }
});

如何才能成为最佳方法?

1 个答案:

答案 0 :(得分:0)

我会通过创建两个模型来实现它,一个用于每个数据创建,一个用于每个数据更改

创建的数据包含6个字段,其中 createdBy createdAt ,其中一个字段为引用ID 的字段数据更改,已删除已删除 deletedFlag

数据更改将包含字段 dataID ,其中包含已创建数据的参考ID, updatedBy updatedAt

通过这种方式,可以很容易地跟踪创建时的更改时间以及删除时间。

PS:您可以在数据更改模式中删除数据创建模型中的数组或数据ID引用ID,这只是我在绑定时要格外小心。