在Sails中维护模型的数据历史记录的有效方法是什么?例如,如果用户更新数据库,我们如何维护数据,并且我们希望保留用于在更新时恢复数据的版本。
我见过很多使用“更改”标记的示例,该标记将日期保留为子标记。这是最有效的吗?
在模型更新中,我们可以复制以前的信息。是否有更好的建议或链接与示例?
{
text:"This is the latest paragraph",
changes:{
text:{
"1470685677694":"This was the paragraph",
"1470685577694":"This was the original paragraph"
}
}
}
我希望找到一个很好的解决方案来查找/搜索和优化这些数据,以便用户在必要时恢复。
答案 0 :(得分: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();
});
})
});
}
};