From c97d3e3d78b680d823dc48320232086637538031 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Fri, 12 Apr 2024 19:30:00 -0500 Subject: [PATCH] fix: LocalDatastore throwing error when `Parse.Query.notEqualTo` null --- integration/test/ParseLocalDatastoreTest.js | 10 ++++++++++ src/OfflineQuery.js | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/integration/test/ParseLocalDatastoreTest.js b/integration/test/ParseLocalDatastoreTest.js index 91dd1b96c..4598539b7 100644 --- a/integration/test/ParseLocalDatastoreTest.js +++ b/integration/test/ParseLocalDatastoreTest.js @@ -1376,6 +1376,16 @@ function runTest(controller) { assert.equal(results.length, 9); }); + it(`${controller.name} can perform notEqualTo null queries`, async () => { + const nullObject = new Parse.Object({ className: 'BoxedNumber', number: null }); + await nullObject.save(); + const query = new Parse.Query('BoxedNumber'); + query.notEqualTo('number', null); + query.fromLocalDatastore(); + const results = await query.find(); + assert.equal(results.length, 10); + }); + it(`${controller.name} can perform containedIn queries`, async () => { const query = new Parse.Query('BoxedNumber'); query.containedIn('number', [3, 5, 7, 9, 11]); diff --git a/src/OfflineQuery.js b/src/OfflineQuery.js index efbc200c9..39220c2f8 100644 --- a/src/OfflineQuery.js +++ b/src/OfflineQuery.js @@ -315,11 +315,11 @@ function matchesKeyConstraints(className, object, objects, key, constraints) { for (const condition in constraints) { compareTo = constraints[condition]; - if (compareTo.__type) { + if (compareTo?.__type) { compareTo = decode(compareTo); } // is it a $relativeTime? convert to date - if (compareTo['$relativeTime']) { + if (compareTo?.['$relativeTime']) { const parserResult = relativeTimeToDate(compareTo['$relativeTime']); if (parserResult.status !== 'success') { throw new ParseError(