fix: liveQuery with containedIn not working when object field is an array (#8128)
This commit is contained in:
@@ -583,6 +583,29 @@ describe('matchesQuery', function () {
|
|||||||
expect(matchesQuery(message, q)).toBe(false);
|
expect(matchesQuery(message, q)).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should support containedIn with array of pointers', () => {
|
||||||
|
const message = {
|
||||||
|
id: new Id('Message', 'O2'),
|
||||||
|
profiles: [pointer('Profile', 'yeahaw'), pointer('Profile', 'yes')],
|
||||||
|
};
|
||||||
|
|
||||||
|
let q = new Parse.Query('Message');
|
||||||
|
q.containedIn('profiles', [
|
||||||
|
Parse.Object.fromJSON({ className: 'Profile', objectId: 'no' }),
|
||||||
|
Parse.Object.fromJSON({ className: 'Profile', objectId: 'yes' }),
|
||||||
|
]);
|
||||||
|
|
||||||
|
expect(matchesQuery(message, q)).toBe(true);
|
||||||
|
|
||||||
|
q = new Parse.Query('Message');
|
||||||
|
q.containedIn('profiles', [
|
||||||
|
Parse.Object.fromJSON({ className: 'Profile', objectId: 'no' }),
|
||||||
|
Parse.Object.fromJSON({ className: 'Profile', objectId: 'nope' }),
|
||||||
|
]);
|
||||||
|
|
||||||
|
expect(matchesQuery(message, q)).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
it('should support notContainedIn with pointers', () => {
|
it('should support notContainedIn with pointers', () => {
|
||||||
let message = {
|
let message = {
|
||||||
id: new Id('Message', 'O1'),
|
id: new Id('Message', 'O1'),
|
||||||
|
|||||||
@@ -103,8 +103,18 @@ function contains(haystack: Array, needle: any): boolean {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Array.isArray(needle)) {
|
||||||
|
for (const need of needle) {
|
||||||
|
if (contains(haystack, need)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return haystack.indexOf(needle) > -1;
|
return haystack.indexOf(needle) > -1;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user