diff --git a/spec/MongoTransform.spec.js b/spec/MongoTransform.spec.js index 7d0aa45e..9a47def9 100644 --- a/spec/MongoTransform.spec.js +++ b/spec/MongoTransform.spec.js @@ -153,7 +153,9 @@ describe('mongoObjectToParseObject', () => { it('file', (done) => { var input = {picture: 'pic.jpg'}; - var output = transform.mongoObjectToParseObject(dummySchema, null, input); + var output = transform.mongoObjectToParseObject(dummySchema, null, input, { + fields: { picture: { type: 'File' }}, + }); expect(typeof output.picture).toEqual('object'); expect(output.picture).toEqual({__type: 'File', name: 'pic.jpg'}); done(); @@ -161,7 +163,9 @@ describe('mongoObjectToParseObject', () => { it('geopoint', (done) => { var input = {location: [180, -180]}; - var output = transform.mongoObjectToParseObject(dummySchema, null, input); + var output = transform.mongoObjectToParseObject(dummySchema, null, input, { + fields: { location: { type: 'GeoPoint' }}, + }); expect(typeof output.location).toEqual('object'); expect(output.location).toEqual( {__type: 'GeoPoint', longitude: 180, latitude: -180} @@ -171,7 +175,9 @@ describe('mongoObjectToParseObject', () => { it('nested array', (done) => { var input = {arr: [{_testKey: 'testValue' }]}; - var output = transform.mongoObjectToParseObject(dummySchema, null, input); + var output = transform.mongoObjectToParseObject(dummySchema, null, input, { + fields: { arr: { type: 'Array' } }, + }); expect(Array.isArray(output.arr)).toEqual(true); expect(output.arr).toEqual([{ _testKey: 'testValue'}]); done(); @@ -189,7 +195,9 @@ describe('mongoObjectToParseObject', () => { }, regularKey: "some data", }]} - let output = transform.mongoObjectToParseObject(dummySchema, null, input); + let output = transform.mongoObjectToParseObject(dummySchema, null, input, { + fields: { array: { type: 'Array' }}, + }); expect(dd(output, input)).toEqual(undefined); done(); }); @@ -271,7 +279,12 @@ describe('transform schema key changes', () => { long: mongodb.Long.fromNumber(Number.MAX_SAFE_INTEGER), double: new mongodb.Double(Number.MAX_VALUE) } - var output = transform.mongoObjectToParseObject(dummySchema, null, input); + var output = transform.mongoObjectToParseObject(dummySchema, null, input, { + fields: { + long: { type: 'Number' }, + double: { type: 'Number' }, + }, + }); expect(output.long).toBe(Number.MAX_SAFE_INTEGER); expect(output.double).toBe(Number.MAX_VALUE); done(); diff --git a/src/Adapters/Storage/Mongo/MongoTransform.js b/src/Adapters/Storage/Mongo/MongoTransform.js index f56a2300..a5c7f41e 100644 --- a/src/Adapters/Storage/Mongo/MongoTransform.js +++ b/src/Adapters/Storage/Mongo/MongoTransform.js @@ -830,10 +830,6 @@ const mongoObjectToParseObject = (schemaController, className, mongoObject, sche if (key.indexOf('_p_') == 0) { var newKey = key.substring(3); - var expected; - if (schemaController && schemaController.getExpectedType) { - expected = schemaController.getExpectedType(className, newKey); - } if (!schema.fields[newKey]) { log.info('transform.js', 'Found a pointer column not in the schema, dropping it.', className, newKey); break; @@ -858,13 +854,12 @@ const mongoObjectToParseObject = (schemaController, className, mongoObject, sche } else if (key[0] == '_' && key != '__type') { throw ('bad key in untransform: ' + key); } else { - var expectedType = schemaController.getExpectedType(className, key); var value = mongoObject[key]; - if (expectedType && expectedType.type === 'File' && FileCoder.isValidDatabaseObject(value)) { + if (schema.fields[key] && schema.fields[key].type === 'File' && FileCoder.isValidDatabaseObject(value)) { restObject[key] = FileCoder.databaseToJSON(value); break; } - if (expectedType && expectedType.type === 'GeoPoint' && GeoPointCoder.isValidDatabaseObject(value)) { + if (schema.fields[key] && schema.fields[key].type === 'GeoPoint' && GeoPointCoder.isValidDatabaseObject(value)) { restObject[key] = GeoPointCoder.databaseToJSON(value); break; }