From a926712951db54984cd15fd8a252b7f5c042fd26 Mon Sep 17 00:00:00 2001 From: Drew Gross Date: Tue, 26 Apr 2016 10:12:45 -0700 Subject: [PATCH] Start using parse format schema in transformQueryKeyValue --- spec/Schema.spec.js | 1 - src/Adapters/Storage/Mongo/MongoTransform.js | 23 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/spec/Schema.spec.js b/spec/Schema.spec.js index 67367b46..d824d2b0 100644 --- a/spec/Schema.spec.js +++ b/spec/Schema.spec.js @@ -124,7 +124,6 @@ describe('SchemaController', () => { var obj; createTestUser() .then(user => { - console.log(user); return config.database.loadSchema() // Create a valid class .then(schema => schema.validateObject('Stuff', {foo: 'bar'})) diff --git a/src/Adapters/Storage/Mongo/MongoTransform.js b/src/Adapters/Storage/Mongo/MongoTransform.js index 307783ab..0fe8e40e 100644 --- a/src/Adapters/Storage/Mongo/MongoTransform.js +++ b/src/Adapters/Storage/Mongo/MongoTransform.js @@ -168,12 +168,12 @@ function transformQueryKeyValue(schema, className, key, value, { validate } = {} if (!(value instanceof Array)) { throw new Parse.Error(Parse.Error.INVALID_QUERY, 'bad $or format - use an array value'); } - return {key: '$or', value: value.map(subQuery => transformWhere(schema, className, subQuery, parseFormatSchema))}; + return {key: '$or', value: value.map(subQuery => transformWhere(schema, className, subQuery, {}, parseFormatSchema))}; case '$and': if (!(value instanceof Array)) { throw new Parse.Error(Parse.Error.INVALID_QUERY, 'bad $and format - use an array value'); } - return {key: '$and', value: value.map(subQuery => transformWhere(schema, className, subQuery, parseFormatSchema))}; + return {key: '$and', value: value.map(subQuery => transformWhere(schema, className, subQuery, {}, parseFormatSchema))}; default: // Other auth data const authDataMatch = key.match(/^authData\.([a-zA-Z0-9_]+)\.id$/); @@ -187,18 +187,19 @@ function transformQueryKeyValue(schema, className, key, value, { validate } = {} } } - let expected = undefined; - if (schema && schema.getExpectedType) { - expected = schema.getExpectedType(className, key); - } - if ((expected && expected.type == 'Pointer') || - (!expected && value && value.__type == 'Pointer')) { - key = '_p_' + key; - } const expectedTypeIsArray = parseFormatSchema && parseFormatSchema.fields[key] && - parseFormatSchema.fields[key].type === 'Array' + parseFormatSchema.fields[key].type === 'Array'; + + const expectedTypeIsPointer = + parseFormatSchema && + parseFormatSchema.fields[key] && + parseFormatSchema.fields[key].type === 'Pointer'; + + if (expectedTypeIsPointer || !parseFormatSchema && value && value.__type === 'Pointer') { + key = '_p_' + key; + } // Handle query constraints if (transformConstraint(value, expectedTypeIsArray) !== CannotTransform) {