From 7064f1d3edb9ebc0522a83f2fa5365ed8f8cc4e9 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Wed, 30 Mar 2016 13:50:36 -0400 Subject: [PATCH] Allow queries on specific objects to user the include and keys query parameters. --- src/Routers/ClassesRouter.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Routers/ClassesRouter.js b/src/Routers/ClassesRouter.js index 57efa95d..40215a7f 100644 --- a/src/Routers/ClassesRouter.js +++ b/src/Routers/ClassesRouter.js @@ -59,7 +59,24 @@ export class ClassesRouter extends PromiseRouter { // Returns a promise for a {response} object. handleGet(req) { - return rest.find(req.config, req.auth, req.params.className, {objectId: req.params.objectId}) + let body = Object.assign(req.body, ClassesRouter.JSONFromQuery(req.query)); + let options = {}; + let allowConstraints = ['keys', 'include']; + + for (let key of Object.keys(body)) { + if (allowConstraints.indexOf(key) === -1) { + throw new Parse.Error(Parse.Error.INVALID_QUERY, 'Improper encode of parameter'); + } + } + + if (typeof body.keys == 'string') { + options.keys = body.keys; + } + if (body.include) { + options.include = String(body.include); + } + + return rest.find(req.config, req.auth, req.params.className, {objectId: req.params.objectId}, options) .then((response) => { if (!response.results || response.results.length == 0) { throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Object not found.');