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

使用Objection.js更新模型时遭遇$setJson方法报错求助

问题分析与解决方案

错误根源

你调用patch方法时参数顺序错误:Objection.js的patch方法第一个参数需要是更新的数据对象,第二个参数才是查询条件。你把device.id(数值1966)作为第一个参数传入,框架会把这个数值当成要更新的JSON payload,而$setJson方法要求接收符合模型schema的对象,因此抛出"invalid value 1966"的错误。

同时,你的模型jsonSchema中未定义deleted_at字段,即使参数顺序正确,后续也会触发schema验证失败。

修复步骤

1. 修正patch调用方式

选择以下两种正确写法之一:

方式一:使用patchAndFetchById(推荐,专门用于按ID更新)

await UserDevices.query().patchAndFetchById(device.id, { deleted_at: new Date().toISOString() });

方式二:patch结合where指定查询条件

await UserDevices.query().patch({ deleted_at: new Date().toISOString() }).where('id', device.id);

2. 补充模型jsonSchema字段

在UserDevices模型的jsonSchema中添加deleted_at的定义:

static get jsonSchema() {
    return {
        type: 'object',
        properties: {
            id: { type: 'number' },
            device_id: { type: 'number' },
            deleted_at: { type: 'string', format: 'date-time' } // 新增字段定义
        }
    };
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:02:42