Skip to content

Commit bd54878

Browse files
committed
Merge pull request #543 from ParsePlatform/nlutsenko.query
Fix passing parameters via URL query when querying for objects.
2 parents 9d9052f + 04795ff commit bd54878

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"dependencies": {
1212
"apn": "^1.7.5",
1313
"aws-sdk": "~2.2.33",
14+
"babel-polyfill": "^6.5.0",
1415
"babel-runtime": "^6.5.0",
1516
"bcrypt-nodejs": "0.0.3",
1617
"body-parser": "^1.14.2",

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); });

src/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// ParseServer - open-source compatible API Server for Parse apps
22

3+
import 'babel-polyfill';
4+
35
var batch = require('./batch'),
46
bodyParser = require('body-parser'),
57
cache = require('./cache'),
@@ -18,7 +20,6 @@ import { FilesController } from './Controllers/FilesController';
1820
import ParsePushAdapter from './Adapters/Push/ParsePushAdapter';
1921
import { PushController } from './Controllers/PushController';
2022

21-
2223
import { ClassesRouter } from './Routers/ClassesRouter';
2324
import { InstallationsRouter } from './Routers/InstallationsRouter';
2425
import { UsersRouter } from './Routers/UsersRouter';

0 commit comments

Comments
 (0)