2017-07-05 56 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,這只是我在綁定時非常謹慎。