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.');