Skip to content

getter on a model is being set when doing upsertGraphAndFetch #1204

@capaj

Description

@capaj

after upgrading from 1.4.0 to 1.5.1 I got this in our functional test suite:

 TypeError: Cannot set property image_url of #<UserModelPublicGQLBase> which has only a getter

      753 |           }
      754 |         })
    > 755 |         existingUsers = await UserModel.query(trx).upsertGraphAndFetch(
          |                                                    ^
      756 |           usersToPatch,
      757 |           { insertMissing: false, update: true }
      758 |         )

      at setFast (node_modules/@capaj/objection/lib/model/modelSet.js:71:20)
      at UserModel.$set (node_modules/@capaj/objection/lib/model/Model.js:194:12)
      at setJson (node_modules/@capaj/objection/lib/model/modelSet.js:30:9)
      at UserModel.$setJson (node_modules/@capaj/objection/lib/model/Model.js:186:12)
      at Function.fromJson (node_modules/@capaj/objection/lib/model/Model.js:321:11)
      at Function.ensureModel (node_modules/@capaj/objection/lib/model/Model.js:583:25)
      at Function.ensureModelArray (node_modules/@capaj/objection/lib/model/Model.js:596:26)
      at new GraphUpsert (node_modules/@capaj/objection/lib/queryBuilder/graph/GraphUpsert.js:19:35)
      at UpsertGraphOperation.onAdd (node_modules/@capaj/objection/lib/queryBuilder/operations/UpsertGraphOperation.js:30:19)
      at UpsertGraphAndFetchOperation.onAdd (node_modules/@capaj/objection/lib/queryBuilder/operations/DelegateOperation.js:19:26)
      at SoftDeleteQueryBuilder.callOperationMethod (node_modules/@capaj/objection/lib/queryBuilder/QueryBuilderOperationSupport.js:359:33)
      at SoftDeleteQueryBuilder.addOperationUsingMethod (node_modules/@capaj/objection/lib/queryBuilder/QueryBuilderOperationSupport.js:395:28)
      at SoftDeleteQueryBuilder.addOperation (node_modules/@capaj/objection/lib/queryBuilder/QueryBuilderOperationSupport.js:386:22)
      at writeOperation (node_modules/@capaj/objection/lib/queryBuilder/QueryBuilder.js:904:19)
      at writeOperation (node_modules/@capaj/objection/lib/queryBuilder/QueryBuilder.js:1414:5)
      at SoftDeleteQueryBuilder.upsertGraphAndFetch (node_modules/@capaj/objection/lib/queryBuilder/QueryBuilder.js:895:12)
      at objection_1.transaction (back-end/src/models/OrganisationModel.ts:755:52)

getter is defined like this:

export default class UserModelPublicGQLBase extends TimestampedModel {
 get image_url(): string {
    ...
  }
}

I can omit the prop manually for now, so no rush on the fix. Anyway-awesome work with 1.5.1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions