From 00571a6c32777e35ee616f7b7c7a16c1195cc46a Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Tue, 12 Apr 2016 19:37:36 -0400 Subject: [PATCH 1/2] Adds support for Long and Double mongodb types (fixes #1316) --- spec/transform.spec.js | 12 ++++++++++++ src/transform.js | 8 ++++++++ 2 files changed, 20 insertions(+) diff --git a/spec/transform.spec.js b/spec/transform.spec.js index 66ab2d3a1d..e58d24d31c 100644 --- a/spec/transform.spec.js +++ b/spec/transform.spec.js @@ -3,6 +3,7 @@ let transform = require('../src/transform'); let dd = require('deep-diff'); +let mongodb = require('mongodb'); var dummySchema = { data: {}, @@ -241,4 +242,15 @@ describe('transform schema key changes', () => { done(); }); + it('untransforms mongodb number types', (done) => { + var input = { + long: mongodb.Long.fromInt(1234566778), + double: new mongodb.Double(1234.3) + } + var output = transform.untransformObject(dummySchema, null, input); + expect(output.long).toBe(1234566778); + expect(output.double).toBe(1234.3); + done(); + }); + }); diff --git a/src/transform.js b/src/transform.js index 57d65c499f..245b2a5fc0 100644 --- a/src/transform.js +++ b/src/transform.js @@ -654,6 +654,14 @@ function untransformObject(schema, className, mongoObject, isNestedObject = fals return Parse._encode(mongoObject); } + if (mongoObject instanceof mongodb.Long) { + return mongoObject.toNumber(); + } + + if (mongoObject instanceof mongodb.Double) { + return mongoObject.value; + } + if (BytesCoder.isValidDatabaseObject(mongoObject)) { return BytesCoder.databaseToJSON(mongoObject); } From 3ec4bc93d2f44cca809b535956f7b79f3e403fc8 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Tue, 12 Apr 2016 21:10:51 -0400 Subject: [PATCH 2/2] Use bigger numbers --- spec/transform.spec.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/transform.spec.js b/spec/transform.spec.js index e58d24d31c..16ce8c337a 100644 --- a/spec/transform.spec.js +++ b/spec/transform.spec.js @@ -244,12 +244,12 @@ describe('transform schema key changes', () => { it('untransforms mongodb number types', (done) => { var input = { - long: mongodb.Long.fromInt(1234566778), - double: new mongodb.Double(1234.3) + long: mongodb.Long.fromNumber(Number.MAX_SAFE_INTEGER), + double: new mongodb.Double(Number.MAX_VALUE) } var output = transform.untransformObject(dummySchema, null, input); - expect(output.long).toBe(1234566778); - expect(output.double).toBe(1234.3); + expect(output.long).toBe(Number.MAX_SAFE_INTEGER); + expect(output.double).toBe(Number.MAX_VALUE); done(); });