Skip to content

TypeError: Cannot read property \'unsafeKnex\' of undefined #1603

@kapouer

Description

@kapouer

Hi i updated to objection 2.0.5 and got:

TypeError: Cannot read property 'unsafeKnex' of undefined
    at WrapMysqlModifySubqueryTransformation.onConvertQueryBuilderBase (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/transformations/WrapMysqlModifySubqueryTransformation.js:20:30)
    at CompositeQueryTransformation.onConvertQueryBuilderBase (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/transformations/CompositeQueryTransformation.js:13:29)
    at convertQueryBuilderBase (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/operations/ObjectionToKnexConvertingOperation.js:93:25)
    at arr.map.item (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/operations/ObjectionToKnexConvertingOperation.js:112:14)
    at Array.map (<anonymous>)
    at convertArray (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/operations/ObjectionToKnexConvertingOperation.js:102:14)
    at args.map (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/operations/ObjectionToKnexConvertingOperation.js:63:14)
    at Array.map (<anonymous>)
    at convertArgs (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/operations/ObjectionToKnexConvertingOperation.js:57:15)
    at KnexOperation.getKnexArgs (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/operations/ObjectionToKnexConvertingOperation.js:19:12)
    at KnexOperation.onBuildKnex (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/operations/KnexOperation.js:8:52)
    at HrefQueryBuilder.callOperationMethod (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/QueryBuilderOperationSupport.js:350:33)
    at forEachOperation.op (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/QueryBuilderOperationSupport.js:445:14)
    at HrefQueryBuilder.forEachOperation (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/QueryBuilderOperationSupport.js:287:37)
    at HrefQueryBuilder.executeOnBuildKnex (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/QueryBuilderOperationSupport.js:443:10)
    at buildKnexQuery (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/QueryBuilder.js:1580:11)
    at HrefQueryBuilder.toKnexQuery (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/QueryBuilder.js:672:14)
    at convertQueryBuilderFunction (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/operations/ObjectionToKnexConvertingOperation.js:137:25)
    at Builder.convertedKnexArgumentFunction (/home/dev/Projects/pageboard/server/0.7/packages/api/node_modules/objection/lib/queryBuilder/operations/ObjectionToKnexConvertingOperation.js:122:7)
    at Formatter.compileCallback (/home/dev/Projects/pageboard/server/0.7/packages/db/node_modules/knex/lib/formatter.js:221:14)
    at Formatter.wrap (/home/dev/Projects/pageboard/server/0.7/packages/db/node_modules/knex/lib/formatter.js:179:38)
    at QueryCompiler_PG.get (/home/dev/Projects/pageboard/server/0.7/packages/db/node_modules/knex/lib/query/compiler.js:880:26)

Protecting it

class WrapMysqlModifySubqueryTransformation extends QueryTransformation {
  onConvertQueryBuilderBase(query, parentQuery) {
    if (!parentQuery) return query;
    const knex = parentQuery.unsafeKnex();

avoided the error.

Here's a place where it happens, but i had no time to simplify it:

	var q = All.api.Href.query(trx)
	.select(
		raw(`jsonb_object_agg(
			href.url,
			jsonb_set(href.meta, '{mime}', to_jsonb(href.mime))
		) AS hrefs`)
	).from((builder) => {
		builder.union([
			collectHrefs({site, trx}, data),
			collectHrefs({site, trx}, data, true)
		]).as('href');
	});

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions