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": {
|
"dependencies": {
|
||||||
"apn": "^1.7.5",
|
"apn": "^1.7.5",
|
||||||
"aws-sdk": "~2.2.33",
|
"aws-sdk": "~2.2.33",
|
||||||
|
"babel-polyfill": "^6.5.0",
|
||||||
"babel-runtime": "^6.5.0",
|
"babel-runtime": "^6.5.0",
|
||||||
"bcrypt-nodejs": "0.0.3",
|
"bcrypt-nodejs": "0.0.3",
|
||||||
"body-parser": "^1.14.2",
|
"body-parser": "^1.14.2",
|
||||||
|
|||||||
@@ -7,12 +7,12 @@ import url from 'url';
|
|||||||
export class ClassesRouter extends PromiseRouter {
|
export class ClassesRouter extends PromiseRouter {
|
||||||
|
|
||||||
handleFind(req) {
|
handleFind(req) {
|
||||||
let body = Object.assign(req.body, req.query);
|
let body = Object.assign(req.body, ClassesRouter.JSONFromQuery(req.query));
|
||||||
let options = {};
|
let options = {};
|
||||||
let allowConstraints = ['skip', 'limit', 'order', 'count', 'keys',
|
let allowConstraints = ['skip', 'limit', 'order', 'count', 'keys',
|
||||||
'include', 'redirectClassNameForKey', 'where'];
|
'include', 'redirectClassNameForKey', 'where'];
|
||||||
|
|
||||||
for (var key in body) {
|
for (let key of Object.keys(body)) {
|
||||||
if (allowConstraints.indexOf(key) === -1) {
|
if (allowConstraints.indexOf(key) === -1) {
|
||||||
throw new Parse.Error(Parse.Error.INVALID_QUERY, 'Improper encode of parameter');
|
throw new Parse.Error(Parse.Error.INVALID_QUERY, 'Improper encode of parameter');
|
||||||
}
|
}
|
||||||
@@ -97,6 +97,18 @@ export class ClassesRouter extends PromiseRouter {
|
|||||||
return {response: {}};
|
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() {
|
mountRoutes() {
|
||||||
this.route('GET', '/classes/:className', (req) => { return this.handleFind(req); });
|
this.route('GET', '/classes/:className', (req) => { return this.handleFind(req); });
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
// ParseServer - open-source compatible API Server for Parse apps
|
// ParseServer - open-source compatible API Server for Parse apps
|
||||||
|
|
||||||
|
import 'babel-polyfill';
|
||||||
|
|
||||||
var batch = require('./batch'),
|
var batch = require('./batch'),
|
||||||
bodyParser = require('body-parser'),
|
bodyParser = require('body-parser'),
|
||||||
cache = require('./cache'),
|
cache = require('./cache'),
|
||||||
@@ -18,7 +20,6 @@ import { FilesController } from './Controllers/FilesController';
|
|||||||
import ParsePushAdapter from './Adapters/Push/ParsePushAdapter';
|
import ParsePushAdapter from './Adapters/Push/ParsePushAdapter';
|
||||||
import { PushController } from './Controllers/PushController';
|
import { PushController } from './Controllers/PushController';
|
||||||
|
|
||||||
|
|
||||||
import { ClassesRouter } from './Routers/ClassesRouter';
|
import { ClassesRouter } from './Routers/ClassesRouter';
|
||||||
import { InstallationsRouter } from './Routers/InstallationsRouter';
|
import { InstallationsRouter } from './Routers/InstallationsRouter';
|
||||||
import { UsersRouter } from './Routers/UsersRouter';
|
import { UsersRouter } from './Routers/UsersRouter';
|
||||||
|
|||||||
Reference in New Issue
Block a user