From 874d10fc746d73915de3d3509185bc3fc7c8af6f Mon Sep 17 00:00:00 2001 From: Drew Gross Date: Mon, 25 Apr 2016 23:36:25 -0700 Subject: [PATCH] Check expected type is array from Parse Format Schema --- src/Adapters/Storage/Mongo/MongoTransform.js | 5 ++++- src/Controllers/DatabaseController.js | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Adapters/Storage/Mongo/MongoTransform.js b/src/Adapters/Storage/Mongo/MongoTransform.js index ac056a20..307783ab 100644 --- a/src/Adapters/Storage/Mongo/MongoTransform.js +++ b/src/Adapters/Storage/Mongo/MongoTransform.js @@ -195,7 +195,10 @@ function transformQueryKeyValue(schema, className, key, value, { validate } = {} (!expected && value && value.__type == 'Pointer')) { key = '_p_' + key; } - const expectedTypeIsArray = (expected && expected.type === 'Array'); + const expectedTypeIsArray = + parseFormatSchema && + parseFormatSchema.fields[key] && + parseFormatSchema.fields[key].type === 'Array' // Handle query constraints if (transformConstraint(value, expectedTypeIsArray) !== CannotTransform) { diff --git a/src/Controllers/DatabaseController.js b/src/Controllers/DatabaseController.js index b6f6b9a6..cb40d101 100644 --- a/src/Controllers/DatabaseController.js +++ b/src/Controllers/DatabaseController.js @@ -654,7 +654,8 @@ DatabaseController.prototype.find = function(className, query, { if (!isMaster) { query = addReadACL(query, aclGroup); } - return schemaController.getOneSchema(className) + return schemaController.reloadData() + .then(() => schemaController.getOneSchema(className)) .catch(error => { // If the schema doesn't exist, pretend it exists with no fields. This behaviour // will likely need revisiting. @@ -664,7 +665,7 @@ DatabaseController.prototype.find = function(className, query, { throw error; }) .then(parseFormatSchema => { - let mongoWhere = this.transform.transformWhere(schemaController, className, query, parseFormatSchema); + let mongoWhere = this.transform.transformWhere(schemaController, className, query, {}, parseFormatSchema); if (count) { delete mongoOptions.limit; return collection.count(mongoWhere, mongoOptions);