gpt4 book ai didi

node.js - 使用 mongoose.js 跟踪对字段的更改

转载 作者:搜寻专家 更新时间:2023-10-31 22:32:31 25 4
gpt4 key购买 nike

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

我开始尝试使用 Hook .pre('save') 的插件,但如果不从数据库中获取旧值,我无法弄清楚哪些字段已被修改,并且我自己比较他们。然后我想我可以使用自定义 setter ,但我遇到了同样的问题——我不知道哪个字段被修改了。目前我只剩下做这样的事情,将字段名称硬编码到 setter 中:

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;
}

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

最佳答案

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

关于node.js - 使用 mongoose.js 跟踪对字段的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9659979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com