【问题标题】:How to reference another property in your mongoose schema如何在您的猫鼬模式中引用另一个属性
【发布时间】:2020-01-05 08:01:52
【问题描述】:

如果我的架构中有一个属性依赖于另一个属性(比如它的最小值),如何在我的架构中定义它?

我的架构中有一个 endDate 和一个 actualEndDate 属性,第二个总是大于或等于第一个,我如何将它放入我的架构中

const schema = new mongoose.Schema({
  endDate: {
    type: Date,
    min: new Date(),
    required: true
  },
  actualEndDate: {
    type: Date,
    min: new Date(),  // I need this to be min: this.endDate or something
  }
});

【问题讨论】:

  • 不粗鲁这似乎很不公平,我为您提供了您所需要的,而标记的答案并不是您想要的,我想知道为什么会这样。
  • 对不起,我刚开始在 stackoverflow 上提问,我认为我标记了两个答案(因为两者都满足我的需要),结果我只能标记一个,而第二个确实覆盖了你的标记.. . 是的,你的解决方案是我在代码中使用的实际解决方案,我会把它还给标记 .. 再次抱歉
  • 碰巧,我刚刚开始使用 StackOverflow 并很快希望获得尽可能多的积分,因此发表了评论。

标签: node.js mongodb mongoose mongoose-schema


【解决方案1】:

您可以添加自己的自定义验证。

试试这个:

endDate: {
    type: Date,
    required: true,
    // min: new Date()
    // default: Date.now
},
actualEndDate: {
    type: Date,
    validate: [
        function (value) {
            return this.endDate <= value;
        }
    ]
},

【讨论】:

    【解决方案2】:

    在您保存/更新任何文档之前,您可以添加预保存挂钩,以检查文档的有效性并根据您的逻辑抛出错误或更新某些值。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-08
      • 2021-08-17
      • 1970-01-01
      • 2015-02-23
      • 2021-05-24
      • 1970-01-01
      • 2020-08-01
      • 2018-10-13
      相关资源
      最近更新 更多