node.js - 如何更改一个集合中的数据,以使保存在同一集合中的其他数据也随之更改?
问题描述
我有一个名为车间的猫鼬模式。 研讨会模式
会话模式嵌套在研讨会模式中。 会话模式
我需要做什么:当我在一个会话中添加/减去时,另一个会话应该更新到准确的时间。
例如: 会议 A:60 分钟 会议 B:45 分钟
当我编辑会话 A 并将数字从 60 分钟更改为 55 分钟时,我需要将会话 B 中的时间自动更新为 50 分钟。
此外,如果我有会话 C,则会话 A 的 5 分钟应该在会话 B 和 C 之间分配。 编辑会话路由
解决方案
这取决于您在哪里更新值,您可以同时更新多少个值以及 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.
})
})
推荐阅读
- c++ - getline(ifstream, line) 的返回字符串为空
- html - 如何将溢出的列表项修复到其他列
- javascript - Mongoose save() 和 find() 没有运行
- swift - 排除 Swift 包中的文件
- python - 值错误:标签的长度必须为“x”python 3
- python - 如何在硒中选择没有选项标签的弹出菜单选项?
- pyspark - 获取上个月的值
- math - 计算一个正方形在旋转 45 度后需要缩小多少
- java - 此版本不符合 Google Play 64 位要求。本机 Java 应用程序的所有 .so 都已存在
- c - If else C 中的错误