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

Objection.js(搭配Knex)如何插入全默认值记录?

使用Objection.js + Knex实现PostgreSQL默认值插入

以下是几种实现INSERT INTO public.myTable DEFAULT VALUES;功能的实用方法:

方法1:直接执行原生SQL(最精准匹配需求)

既然你要的就是原生SQL的效果,直接通过Knex的raw方法执行是最直接的方式,还能通过RETURNING *获取插入后的完整记录(包括自增ID):

// 假设你的模型类是MyModel
const insertResult = await MyModel.knex().raw('INSERT INTO public.myTable DEFAULT VALUES RETURNING *');
const newRecord = insertResult.rows[0];

方法2:使用Objection.js的ORM插入语法

如果想保持ORM的代码风格,直接传入空对象执行插入即可,数据库会自动使用schema定义的字段默认值:

const newRecord = await MyModel.query().insert({});

注意事项

  • 确保你的数据库表字段确实定义了默认值(比如DEFAULT now()或者DEFAULT ''等),否则空对象插入会触发数据库的非空约束报错。
  • 如果你的模型的jsonSchema中标记了某些字段为required,但数据库层面有默认值,可能需要调整模型验证规则(比如移除required,或者设置模型的skipValidation选项),避免ORM层面的验证拦截插入操作:
    const newRecord = await MyModel.query().insert({}).skipValidation();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:09:30