Fix passing parameters via URL query when querying for objects.

This commit is contained in:
Nikita Lutsenko
2016-02-20 23:46:05 -08:00
parent fb1c6bb3fb
commit 04795ff165

View File

@@ -7,12 +7,12 @@ import url from 'url';
export class ClassesRouter extends PromiseRouter {
handleFind(req) {
let body = Object.assign(req.body, req.query);
let body = Object.assign(req.body, ClassesRouter.JSONFromQuery(req.query));
let options = {};
let allowConstraints = ['skip', 'limit', 'order', 'count', 'keys',
'include', 'redirectClassNameForKey', 'where'];
for (var key in body) {
for (let key of Object.keys(body)) {
if (allowConstraints.indexOf(key) === -1) {
throw new Parse.Error(Parse.Error.INVALID_QUERY, 'Improper encode of parameter');
}
@@ -97,6 +97,18 @@ export class ClassesRouter extends PromiseRouter {
return {response: {}};
});
}
static JSONFromQuery(query) {
let json = {};
for (let [key, value] of Object.entries(query)) {
try {
json[key] = JSON.parse(value);
} catch (e) {
json[key] = value;
}
}
return json
}
mountRoutes() {
this.route('GET', '/classes/:className', (req) => { return this.handleFind(req); });