Skip to content

Commit 04795ff

Browse files
committed
Fix passing parameters via URL query when querying for objects.
1 parent fb1c6bb commit 04795ff

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

src/Routers/ClassesRouter.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ import url from 'url';
77
export class ClassesRouter extends PromiseRouter {
88

99
handleFind(req) {
10-
let body = Object.assign(req.body, req.query);
10+
let body = Object.assign(req.body, ClassesRouter.JSONFromQuery(req.query));
1111
let options = {};
1212
let allowConstraints = ['skip', 'limit', 'order', 'count', 'keys',
1313
'include', 'redirectClassNameForKey', 'where'];
1414

15-
for (var key in body) {
15+
for (let key of Object.keys(body)) {
1616
if (allowConstraints.indexOf(key) === -1) {
1717
throw new Parse.Error(Parse.Error.INVALID_QUERY, 'Improper encode of parameter');
1818
}
@@ -97,6 +97,18 @@ export class ClassesRouter extends PromiseRouter {
9797
return {response: {}};
9898
});
9999
}
100+
101+
static JSONFromQuery(query) {
102+
let json = {};
103+
for (let [key, value] of Object.entries(query)) {
104+
try {
105+
json[key] = JSON.parse(value);
106+
} catch (e) {
107+
json[key] = value;
108+
}
109+
}
110+
return json
111+
}
100112

101113
mountRoutes() {
102114
this.route('GET', '/classes/:className', (req) => { return this.handleFind(req); });

0 commit comments

Comments
 (0)