From f312f81cbd2b7625ece3f397d5fdc6e07b734ee3 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Tue, 12 Apr 2016 21:19:47 -0400 Subject: [PATCH] Adds support for Long and Double mongodb types (fixes #1316) (#1470) * Adds support for Long and Double mongodb types (fixes #1316) * Use bigger numbers --- 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 66ab2d3a..16ce8c33 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.fromNumber(Number.MAX_SAFE_INTEGER), + double: new mongodb.Double(Number.MAX_VALUE) + } + var output = transform.untransformObject(dummySchema, null, input); + expect(output.long).toBe(Number.MAX_SAFE_INTEGER); + expect(output.double).toBe(Number.MAX_VALUE); + done(); + }); + }); diff --git a/src/transform.js b/src/transform.js index 57d65c49..245b2a5f 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); }