LiveQuery constrains matching fix (#2357)

* 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”
This commit is contained in:
Simonas Karuzas
2016-07-23 07:27:52 +03:00
committed by Drew
parent a60c3f48ce
commit 93b41170fd

View File

@@ -117,6 +117,9 @@ function matchesQuery(object: any, query: any): boolean {
* Determines whether an object matches a single key's constraints * Determines whether an object matches a single key's constraints
*/ */
function matchesKeyConstraints(object, key, constraints) { function matchesKeyConstraints(object, key, constraints) {
if (constraints === null) {
return false;
}
var i; var i;
if (key === '$or') { if (key === '$or') {
for (i = 0; i < constraints.length; i++) { for (i = 0; i < constraints.length; i++) {