Merge pull request #543 from ParsePlatform/nlutsenko.query
Fix passing parameters via URL query when querying for objects.
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
"dependencies": {
|
||||
"apn": "^1.7.5",
|
||||
"aws-sdk": "~2.2.33",
|
||||
"babel-polyfill": "^6.5.0",
|
||||
"babel-runtime": "^6.5.0",
|
||||
"bcrypt-nodejs": "0.0.3",
|
||||
"body-parser": "^1.14.2",
|
||||
|
||||
@@ -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); });
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
// ParseServer - open-source compatible API Server for Parse apps
|
||||
|
||||
import 'babel-polyfill';
|
||||
|
||||
var batch = require('./batch'),
|
||||
bodyParser = require('body-parser'),
|
||||
cache = require('./cache'),
|
||||
@@ -18,7 +20,6 @@ import { FilesController } from './Controllers/FilesController';
|
||||
import ParsePushAdapter from './Adapters/Push/ParsePushAdapter';
|
||||
import { PushController } from './Controllers/PushController';
|
||||
|
||||
|
||||
import { ClassesRouter } from './Routers/ClassesRouter';
|
||||
import { InstallationsRouter } from './Routers/InstallationsRouter';
|
||||
import { UsersRouter } from './Routers/UsersRouter';
|
||||
|
||||
Reference in New Issue
Block a user