Skip to content

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

Closed
@haparicio

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.

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