首页 > 解决方案 > 如何更改一个集合中的数据,以使保存在同一集合中的其他数据也随之更改?

问题描述

我有一个名为车间的猫鼬模式。 研讨会模式

会话模式嵌套在研讨会模式中。 会话模式

我需要做什么:当我在一个会话中添加/减去时,另一个会话应该更新到准确的时间。

例如: 会议 A:60 分钟 会议 B:45 分钟

当我编辑会话 A 并将数字从 60 分钟更改为 55 分钟时,我需要将会话 B 中的时间自动更新为 50 分钟。

此外,如果我有会话 C,则会话 A 的 5 分钟应该在会话 B 和 C 之间分配。 编辑会话路由

标签: node.jsmongodbexpressejsmongoose-schema

解决方案


这取决于您在哪里更新值,您可以同时更新多少个值以及 3 个值的逻辑是什么(如果我从 B 中删除 10 个,A 和 C 会各赚 5 个吗?)。

您可以在路由中执行逻辑,也可以在自定义字段和时间设置器的帮助下使用 mongoose 中间件:

https://mongoosejs.com/docs/middleware.html

https://mongoosejs.com/docs/2.7.x/docs/getters-setters.html

前任:

Session.path("time", function(value) {
this._oldTime = this.time;
return value;
})

Workshop.pre("save", function() {
  Session.findById(this._id).populate("sessions").exec((err, workshop) => {

   // your calculation here. Compare this._oldValue in each session document of the workshop, see what changes and calculate what needs to be done to change the others sessions values, then save each.
  })
})

推荐阅读