使用 mongoose.js 跟踪字段更改

2024-02-28

我试图找出使用 mongoose.js 时跟踪字段更改的最佳方法。例如,每次name设置了对象上的字段,我想向该对象的历史记录(作为嵌入文档)添加一个新条目,看起来像{ field: 'name', previous: 'foo', current: 'bar', date: '3/06/2012 9:06 am' }.

我首先尝试使用一个挂钩的插件.pre('save')但如果不从数据库中获取旧值并自己进行比较,我无法弄清楚哪些字段已被修改。然后我想我可以使用自定义设置器,但我遇到了同样的问题 - 我不知道修改了哪个字段。目前,我只能做这样的事情,将字段名称硬编码到设置器中:

var comment = new Schema({
  name : { type: String, set: trackName },
  history : [Change]
});

var trackName = function(val) {
  var change = new Change;
  change.field = 'name';
  change.previous = this.name;
  change.current = val;
  change.date = Date.now();
  this.history.push(change);
  return val;
}

但这意味着我需要为我想要跟踪的每个字段名称提供一个自定义设置器。我猜一定有更好的方法来实现这一目标。


看起来我错过了“Document.modifiedPaths”。这正是我确定哪些字段已被修改所需要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 mongoose.js 跟踪字段更改 的相关文章

随机推荐