fix: relation constraints in compound queries Parse.Query.or, Parse.Query.and not working (#8203)

This commit is contained in:
dblythy
2022-10-24 21:45:17 +11:00
committed by GitHub
parent fb503320c3
commit 28f0d26677
2 changed files with 55 additions and 12 deletions

View File

@@ -929,32 +929,32 @@ class DatabaseController {
reduceInRelation(className: string, query: any, schema: any): Promise<any> {
// Search for an in-relation or equal-to-relation
// Make it sequential for now, not sure of paralleization side effects
const promises = [];
if (query['$or']) {
const ors = query['$or'];
return Promise.all(
ors.map((aQuery, index) => {
promises.push(
...ors.map((aQuery, index) => {
return this.reduceInRelation(className, aQuery, schema).then(aQuery => {
query['$or'][index] = aQuery;
});
})
).then(() => {
return Promise.resolve(query);
});
);
}
if (query['$and']) {
const ands = query['$and'];
return Promise.all(
ands.map((aQuery, index) => {
promises.push(
...ands.map((aQuery, index) => {
return this.reduceInRelation(className, aQuery, schema).then(aQuery => {
query['$and'][index] = aQuery;
});
})
).then(() => {
return Promise.resolve(query);
});
);
}
const promises = Object.keys(query).map(key => {
const otherKeys = Object.keys(query).map(key => {
if (key === '$and' || key === '$or') {
return;
}
const t = schema.getExpectedType(className, key);
if (!t || t.type !== 'Relation') {
return Promise.resolve(query);
@@ -1016,7 +1016,7 @@ class DatabaseController {
});
});
return Promise.all(promises).then(() => {
return Promise.all([...promises, ...otherKeys]).then(() => {
return Promise.resolve(query);
});
}