Skip to content

Query of type "whereKey matchesKey inQuery" returns 'improper usage of $select' error #371

Description

@haparicio

Hi.

I've been using a query in a iOS app, that worked fine with parse hosted services,
but after trying with a local parse server it returns the error improper usage of $select error.

For NDA reasons, I had to change the names of the classes, attributes, tokens and keys in this ticket.

This is the query I'm using:

override func queryForTable() -> PFQuery {
    let query = PFQuery(className: "C1");
    let auxQuery = PFQuery(className: "C1");
    query.whereKey("A1", matchesKey: "A2", inQuery: auxQuery);
    query.includeKey("A3");
    query.includeKey("A2");
    query.orderByDescending("createdAt");

    return query;
}

A1 and A2 are pointers to objects of the same type. I tried the same query with simple types,
but the error still happens. If I comment the whereKey line, the query works perfectly and I get my results.

I ran the parse server with VERBOSE=1 and this is what I got:

GET /parse/classes/C1 { host: 'localhost:1337',
  'x-parse-client-version': 'i1.12.0',
  accept: '*/*',
  'x-parse-session-token': 'a-valid-session-token',
  'x-parse-application-id': 'my-application-id',
  'x-parse-client-key': 'my-client-key',
  'x-parse-installation-id': 'my-installation-id',
  'x-parse-os-version': '9.2 (15D21)',
  'accept-language': 'en-us',
  'accept-encoding': 'gzip, deflate',
  'content-type': 'application/json; charset=utf-8',
  'content-length': '169',
  'user-agent': 'projname/1 CFNetwork/758.2.8 Darwin/15.3.0',
  connection: 'keep-alive',
  'x-parse-app-build-version': '1',
  'x-parse-app-display-version': '1.0' } {
  "where": {
    "A1": {
      "$select": {
        "query": {
          "className": "C1"
        },
        "key": "A2"
      }
    }
  },
  "include": "A3,A2",
  "order": "-createdAt",
  "limit": "3"
}
error: ParseError { code: 102, message: 'improper usage of $select' }

After this, I tried running the queries manually with curl requests. I tried querying
my local parse server and the hosted service. This is the result:

> curl -X GET -H "X-Parse-Application-Id: my-application-id"  -H "X-Parse-REST-API-Key: my-rest-api-key"  -G  --data-urlencode 'where={"A1": {"$select": {"query": {"className": "C1"},"key": "A2"}}}' --data-urlencode 'include=A3,A2'  --data-urlencode 'limit=3' --data-urlencode 'order=-createdAt'  http://localhost:1337/parse/classes/C1
{"code":102,"error":"improper usage of $select"}
> curl -X GET -H "X-Parse-Application-Id: my-application-id"  -H "X-Parse-REST-API-Key: my-rest-api-key"  -G  --data-urlencode 'where={"A1": {"$select": {"query": {"className": "C1"},"key": "A2"}}}' --data-urlencode 'include=A3,A2'  --data-urlencode 'limit=3' --data-urlencode 'order=-createdAt'  https://api.parse.com/1/classes/C1
{"results":[{"createdAt":"2016-02-10T22:36:04.828Z","A4":10,"objectId":"sgFcN9g3d5", ...]}}

(This last result is cut short, again to avoid NDA issues, but it's the right result.)

Do you have any idea of what is wrong here?

Thanks in advance.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    type:bugImpaired feature or lacking behavior that is likely assumed

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions