2016-08-08 52 views
3

維護Sails中的模型的數據歷史記錄的有效方法是什麼?例如,如果用戶更新數據庫,我們如何維護數據,並且我們希望保留用於在數據更新時恢復數據的版本。在SailsJS中維護模型更新的歷史記錄

我見過很多使用「變化」標記的例子,它將日期保留爲子標記。這是最高效的嗎?

在型號更新時,我們可以複製以前的信息。有沒有更好的建議或與例子的聯繫?

{ 
    text:"This is the latest paragraph", 
    changes:{ 
     text:{ 
      "1470685677694":"This was the paragraph", 
      "1470685577694":"This was the original paragraph" 
     } 
    } 
} 

我希望找到一個很好的解決方案來查找/搜索和優化這些數據,以便用戶在必要時恢復。

回答

0

您可以像下面那樣定義您的模型,因此您可以保留歷史記錄以及您可以用來恢復以前的任何值。

API /模型/ Test.js

module.exports = { 
    connectionName:"someMongodbServer", 
    tableName:"test", 
    autoCreatedAt:false, 
    autoUpdatedAt:false, 
    autoPk:false, 
    attributes: { 
    id:{ 
     type:"integer", 
     primaryKey:true, 
     autoIncrement:true 
    }, 
    name:"string", 
    history:{ 
     type:'json', 
     defaultsTo:[] 
    } 
    }, 
    beforeCreate:function(value,cb){ 
    Test.count().exec(function (err, cnt) { 
     if(err) 
     return cb(err); 
     value.id = cnt + 1; 
     cb(); 
    }); 
    }, 
    beforeUpdate:function(values,cb){ 
    Test.native(function(err,collection){ 
     if(err) 
     return cb(err); 
     collection.findOne({_id:values.id},{history:0,_id:0},function(err,data){ 
     if(err) 
      return cb(err); 
     collection.updateOne({_id:values.id},{$push:{history:data}},function(err,res){ 
      if(err) 
      return cb(err); 
      console.log(res); 
      cb(); 
     }); 
     }) 
    }); 
    } 
}; 
相關問題