【问题标题】:Clean versioning/change history implementation in MongooseMongoose 中的干净版本控制/更改历史实现
【发布时间】:2023-03-31 16:27:01
【问题描述】:

我正在尝试通过 Mongoose/Node.js/Express 在 MongoDB 文档中进行更改时实现创建记录 (Update) 的方法。我是 Node.js 的新手,所以我想知道最好的方法是什么。

我想记录是这样的:

update: {
    before: { ... },
    after:  { ... },
    created_at: Date,
};

我知道可以设置一个pre 函数,该函数在调用另一个方法时被调用,例如save.

Entry.pre('save', function(next) {
    // create an Update record
    next();
});

问题是,我不确定如何确定 save 操作中发生了哪些更改,因此很难创建更新值列表。

谁能想到一个干净的方法来做到这一点?

【问题讨论】:

  • 如果您想在更新文档时保留每次更改的版本,请考虑使用 couchdb 代替每次更新的版本
  • 我不知道 CouchDB 有这个功能。在这一点上切换到 CouchDB 可能是一个巨大的变化,但如果它消除了版本控制和回滚的头痛,也许它是值得的。
  • 您可能想看看[此问答][1] [1]:stackoverflow.com/questions/7370833/…

标签: node.js express mongoose


【解决方案1】:

您可能想查看Model.js 来源。模型原型中有两个功能可以帮助您。 _dirty() 和 _delta()

【讨论】:

  • 谢谢唐尼。它们是私人功能,但它们似乎在做我想做的事。也许我可以请开发人员为他们制作公共接口以获得长期稳定性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
  • 2013-02-18
  • 2017-04-14
相关资源
最近更新 更多