Fix passing parameters via URL query when querying for objects.
This commit is contained in:
@@ -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');
|
||||||
}
|
}
|
||||||
@@ -98,6 +98,18 @@ export class ClassesRouter extends PromiseRouter {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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); });
|
||||||
this.route('GET', '/classes/:className/:objectId', (req) => { return this.handleGet(req); });
|
this.route('GET', '/classes/:className/:objectId', (req) => { return this.handleGet(req); });
|
||||||
|
|||||||
Reference in New Issue
Block a user