From 6adbe75169e300c97c2eb020466782935c4942d0 Mon Sep 17 00:00:00 2001 From: Simonas Karuzas Date: Sat, 23 Jul 2016 07:27:52 +0300 Subject: [PATCH] LiveQuery constrains matching fix (#2357) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Removing sessionToken and authData from _User objects included in a query This bug caused sessionToken to be replaced on client side to some old sessionToken from DB. * Removing dangling variable that is never used * Checking if object has defined key for Pointer constraints in liveQuery If there is a liveQuery subscription, with Pointer type constrains (e.g query.equalTo('user', Parse.User.current())), and new object has undefined value for that field, we get this error: error: Uncaught internal server error. [TypeError: Cannot read property 'className' of undefined] TypeError: Cannot read property 'className' of undefined at matchesKeyConstraints (…/node_modules/parse-server/lib/LiveQuery/QueryTools.js:145:51) * LiveQuery constrains matching fix When constrains == null, we get “Uncaught internal server error” --- src/LiveQuery/QueryTools.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/LiveQuery/QueryTools.js b/src/LiveQuery/QueryTools.js index 605e49b1c0..f2cb5edcbe 100644 --- a/src/LiveQuery/QueryTools.js +++ b/src/LiveQuery/QueryTools.js @@ -117,6 +117,9 @@ function matchesQuery(object: any, query: any): boolean { * Determines whether an object matches a single key's constraints */ function matchesKeyConstraints(object, key, constraints) { + if (constraints === null) { + return false; + } var i; if (key === '$or') { for (i = 0; i < constraints.length; i++) {