2017-07-05 28 views
2

对于需要跟踪数据创建和更改的项目,我正在使用MongoDBmongoose。要求是我需要跟踪记录的创建和更改,包括日期/时间和应用用户(不是操作系统用户)。Mongoose Schema将时间戳扩展为具有新属性(用户名)

我看过猫鼬timestamps选项,可以解决我的日期/时间问题,但是有没有办法将它扩展为包含额外的属性,我将添加应用程序用户名?

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

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

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

它会是什么样的最佳方法?

回答

0

我会通过创建两种型号,一种为每个数据创建,一个每个数据更改接近它。

创建这将有6个字段之一是createdBycreatedAt,和一个将是一个字段与数组引用ID数据变化的的deletedBydeletedAtdeletedFlag数据。

数据改变将具有字段数据ID这将有创建的数据的参考ID,updatedByupdatedAt

通过这种方式,可以很容易地跟踪它在什么时候被更改以及何时被删除。 PS:你可以删除数据创建模型中的数组或数据更改模式下的数据ID引用ID,这只是我在绑定时非常谨慎。