You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Objection.js中仅在插入时验证输入,更新时不验证?

实现Objection.js仅插入时触发验证,更新时跳过验证

你可以通过重写模型的$validate方法,结合Objection.js内置的$isInsert属性来实现这个需求。具体做法如下:

在你的CustomerModel类中添加以下方法:

async $validate(opt) {
  // 仅在插入操作时执行默认的JSON Schema验证
  if (this.$isInsert) {
    return super.$validate(opt);
  }
  // 更新操作直接跳过验证,返回resolved状态的Promise
  return Promise.resolve();
}

原理说明

  • $isInsert是Objection.js模型实例的内置属性,当执行插入操作(比如CustomerModel.query().insert(data))时,该属性为true;执行更新操作(比如CustomerModel.query().updateAndFetchById(id, data))时,该属性为false。
  • 重写$validate方法后,只有插入时会调用父类的默认验证逻辑(即基于jsonSchema的验证),更新操作会直接跳过验证流程。

补充说明

如果你的BaseModel中也自定义了$validate逻辑,确保super.$validate(opt)调用的是正确的父类验证方法,避免覆盖掉基类的自定义验证逻辑(如果有的话)。

内容的提问来源于stack exchange,提问作者Gpak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 01:09:28