【发布时间】:2020-09-14 22:26:52
【问题描述】:
我在尝试使用 mongoose 运行验证时遇到问题。
我需要在更新期间验证一个值,以确保新值有效。就我而言,我有两个字段,一个start 和一个end 字段,这意味着在更新时我需要检查新的end 值是否低于当前的start 值。
我的验证是
period: {
start: { type: Date, required: true, default: new Date() },
end: {
type: Date,
required: true,
validate: {
validator: function (v) {
return this.period.start < v;
},
message: props =>
`finish date ${props.value} is previous than start date!`,
},
},
},
这在创建期间可以正常工作,但是当您尝试更新时它根本不起作用。它说period 是null 或undefined,如果我添加findOneAndUpdate 选项{ runValidators: true, context: 'query' },那么this 是一个猫鼬对象,但我实际上需要访问我的文档中的数据m 尝试验证以检查 start 的原始值是否不高于 end 的新值。
所以我想知道如何在验证期间获取当前文档?
如果由于某种原因这是不可能的,我如何在更新期间进行验证?因为我需要在创建和更新时验证所有内容。
我想过一些“解决方法”,但我确信 mongoose 有正确的方法。
【问题讨论】:
标签: javascript mongoose