我有一个叫做Workshop的猫鼬模式。 workshop schema
会话模式嵌套在工作坊模式内。 session schema
我需要做的是: 当我在一个会话中添加/减去时,另一会话应更新为准确的时间。
例如: A场:60分钟 B节:45分钟
当我编辑会话A并将数字从60分钟更改为55分钟时,我需要将会话B中的时间自动更新为50分钟。
此外,如果我有C课,那么从A课开始的5分钟应该在B课和C课之间分配。 edit session route
答案 0 :(得分:0)
这取决于您要在哪里更新值,可以同时更新多少个值以及3个值的逻辑是什么(如果我从B中删除10个,A和C会分别获得5个?)。
您可以在路由中执行逻辑,也可以在自定义字段和设置器的帮助下使用猫鼬中间件:
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.
})
})