代码之家  ›  专栏  ›  技术社区  ›  oleksii pytts

尝试使用Objection更新模型时出错

  •  0
  • oleksii pytts  · 技术社区  · 8 月前

    在尝试使用以下命令更新模型中的记录时,我遇到了此错误 objection.js .

    我得到的错误是

    Error: An error occurred while executing $setJson method. $setJson method was given an invalid value 1966
    at setJson (node_modules/objection/lib/model/modelSet.js:13:11)
    at UserDevices.$setJson (node_modules/objection/lib/model/Model.js:128:12)
    at UserDevices.fromJson (node_modules/objection/lib/model/Model.js:264:11)
    at UserDevices.ensureModel (node_modules/objection/lib/model/Model.js:584:25)
    at UpdateOperation.onAdd (node_modules/objection/lib/queryBuilder/operations/UpdateOperation.js:21:29)
    at QueryBuilder.callOperationMethod (node_modules/objection/lib/queryBuilder/QueryBuilderOperationSupport.js:382:33)
    at QueryBuilder.addOperationUsingMethod (node_modules/objection/lib/queryBuilder/QueryBuilderOperationSupport.js:413:28)
    at QueryBuilder.addOperation (node_modules/objection/lib/queryBuilder/QueryBuilderOperationSupport.js:404:22)
    at /home/node/app/node_modules/objection/lib/queryBuilder/QueryBuilder.js:709:12
    at writeOperation (node_modules/objection/lib/queryBuilder/QueryBuilder.js:1317:5)
    at QueryBuilder.patch (node_modules/objection/lib/queryBuilder/QueryBuilder.js:706:12)
    at UserDevicesConsumer.handleKafkaMessage (lib/kafka/consumers/userDevices.js:61:47)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Context.<anonymous> (test/kafka/consumer/userDevices.test.js:95:9)
    

    这是我用来更新模型的代码

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

    这是我的模型的模式

    const { Model } = require('objection');
    
    class UserDevices extends Model {
        static get tableName() {
            return 'user_devices';
        }
    
        static get idColumn() {
            return 'id';
        }
    
        static get jsonSchema() {
            return {
                type: 'object',
                properties: {
                    id: { type: 'number' },
                    device_id: { type: 'number' }
                }
            };
        }
    }
    
    module.exports = UserDevices;
    

    我花了几个小时试图弄清楚这一点,但无济于事

    1 回复  |  直到 8 月前
        1
  •  0
  •   Omotayo Obafemi    8 月前

    您遇到错误,因为 patch 方法需要一个应该是对象的参数。

    更改

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

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

    这应该能解决问题