Skip to content

Uncaught error while using DOT '.' notation on undefined field #5030

Closed
@seza443

Description

@seza443

Issue Description

When building a query with a matchesKeyInQuery operator with a DOT notation (made available in #4399 thanks for that), an uncaught error occurs if the first part of the DOT notation is undefined.

Steps to reproduce

let subQuery = new Parse.Query('SubClass');
subQuery.equalTo('condition', 'not_important'); // any condition // don't care

let parentQuery = new Parse.Query('ParentClass');
parentQuery.matchesKeyInQuery('objectId', 'parent.objectId', subQuery); // "parent" is undefined for some of the sub-results

parentQuery.find({
    success: (results) => {
        console.log(results);
    },
    error: (error) => {
        console.log(error);
    }
});

SubClass has a Pointer parent to ParentClass but sometimes, it is undefined.

Expected Results

I expect to see the results matching the filters and ignoring the fields that are undefined

Actual Outcome

I receive an Undefined error

ParseError { code: 1, message: undefined }

Server logs:

{"level":"error","message":"Uncaught internal server error. TypeError: Cannot read property 'objectId' of undefined\n    at values.push.key.split.reduce (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:330:50)\n    at Array.reduce (native)\n    at transformSelect (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:330:32)\n    at subquery.execute.then.response (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:369:5)\n    at process._tickDomainCallback (internal/process/next_tick.js:129:7) TypeError: Cannot read property 'objectId' of undefined\n    at values.push.key.split.reduce (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:330:50)\n    at Array.reduce (native)\n    at transformSelect (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:330:32)\n    at subquery.execute.then.response (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:369:5)\n    at process._tickDomainCallback (internal/process/next_tick.js:129:7)"}
TypeError: Cannot read property 'objectId' of undefined
    at values.push.key.split.reduce (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:330:50)
    at Array.reduce (native)
    at transformSelect (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:330:32)
    at subquery.execute.then.response (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:369:5)
    at process._tickDomainCallback (internal/process/next_tick.js:129:7)

Environment Setup

  • Server

    • parse-server version (Be specific! Don't say 'latest'.) : 2.7.4
    • Operating System: Ubuntu 16.04
    • Hardware: Intel i7 16 GO RAM
    • Localhost or remote server? (AWS, Heroku, Azure, Digital Ocean, etc): [FILL THIS OUT]
  • Database

    • MongoDB version: 3.2
    • Storage engine: S3
    • Hardware: Intel i7 16 GO RAM
    • Localhost or remote server? (AWS, mLab, ObjectRocket, Digital Ocean, etc): Local

Logs/Trace

{"level":"error","message":"Uncaught internal server error. TypeError: Cannot read property 'objectId' of undefined\n    at values.push.key.split.reduce (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:330:50)\n    at Array.reduce (native)\n    at transformSelect (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:330:32)\n    at subquery.execute.then.response (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:369:5)\n    at process._tickDomainCallback (internal/process/next_tick.js:129:7) TypeError: Cannot read property 'objectId' of undefined\n    at values.push.key.split.reduce (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:330:50)\n    at Array.reduce (native)\n    at transformSelect (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:330:32)\n    at subquery.execute.then.response (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:369:5)\n    at process._tickDomainCallback (internal/process/next_tick.js:129:7)"}
TypeError: Cannot read property 'objectId' of undefined
    at values.push.key.split.reduce (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:330:50)
    at Array.reduce (native)
    at transformSelect (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:330:32)
    at subquery.execute.then.response (/home/app/parse/node_modules/parse-server/lib/RestQuery.js:369:5)
    at process._tickDomainCallback (internal/process/next_tick.js:129:7)

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