fix: Context not passed to Cloud Code Trigger beforeFind when using Parse.Query.include (#8765)
This commit is contained in:
committed by
GitHub
parent
8d3117e0bc
commit
7d32d8934f
@@ -2510,6 +2510,31 @@ describe('beforeFind hooks', () => {
|
|||||||
expect(res2.get('pointerFieldArray')[0].get('aField')).toBe('aFieldValue');
|
expect(res2.get('pointerFieldArray')[0].get('aField')).toBe('aFieldValue');
|
||||||
expect(spy).toHaveBeenCalledTimes(2);
|
expect(spy).toHaveBeenCalledTimes(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should have access to context in include query in beforeFind hook', async () => {
|
||||||
|
let beforeFindTestObjectCalled = false;
|
||||||
|
let beforeFindTestObject2Called = false;
|
||||||
|
const obj1 = new Parse.Object('TestObject');
|
||||||
|
const obj2 = new Parse.Object('TestObject2');
|
||||||
|
obj2.set('aField', 'aFieldValue');
|
||||||
|
await obj2.save();
|
||||||
|
obj1.set('pointerField', obj2);
|
||||||
|
await obj1.save();
|
||||||
|
Parse.Cloud.beforeFind('TestObject', req => {
|
||||||
|
expect(req.context).toBeDefined();
|
||||||
|
expect(req.context.a).toEqual('a');
|
||||||
|
beforeFindTestObjectCalled = true;
|
||||||
|
});
|
||||||
|
Parse.Cloud.beforeFind('TestObject2', req => {
|
||||||
|
expect(req.context).toBeDefined();
|
||||||
|
expect(req.context.a).toEqual('a');
|
||||||
|
beforeFindTestObject2Called = true;
|
||||||
|
});
|
||||||
|
const query = new Parse.Query('TestObject');
|
||||||
|
await query.include('pointerField').find({ context: { a: 'a' } });
|
||||||
|
expect(beforeFindTestObjectCalled).toBeTrue();
|
||||||
|
expect(beforeFindTestObject2Called).toBeTrue();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('afterFind hooks', () => {
|
describe('afterFind hooks', () => {
|
||||||
|
|||||||
@@ -478,6 +478,7 @@ _UnsafeRestQuery.prototype.replaceInQuery = async function () {
|
|||||||
className: inQueryValue.className,
|
className: inQueryValue.className,
|
||||||
restWhere: inQueryValue.where,
|
restWhere: inQueryValue.where,
|
||||||
restOptions: additionalOptions,
|
restOptions: additionalOptions,
|
||||||
|
context: this.context,
|
||||||
});
|
});
|
||||||
return subquery.execute().then(response => {
|
return subquery.execute().then(response => {
|
||||||
transformInQuery(inQueryObject, subquery.className, response.results);
|
transformInQuery(inQueryObject, subquery.className, response.results);
|
||||||
@@ -537,6 +538,7 @@ _UnsafeRestQuery.prototype.replaceNotInQuery = async function () {
|
|||||||
className: notInQueryValue.className,
|
className: notInQueryValue.className,
|
||||||
restWhere: notInQueryValue.where,
|
restWhere: notInQueryValue.where,
|
||||||
restOptions: additionalOptions,
|
restOptions: additionalOptions,
|
||||||
|
context: this.context,
|
||||||
});
|
});
|
||||||
|
|
||||||
return subquery.execute().then(response => {
|
return subquery.execute().then(response => {
|
||||||
@@ -609,6 +611,7 @@ _UnsafeRestQuery.prototype.replaceSelect = async function () {
|
|||||||
className: selectValue.query.className,
|
className: selectValue.query.className,
|
||||||
restWhere: selectValue.query.where,
|
restWhere: selectValue.query.where,
|
||||||
restOptions: additionalOptions,
|
restOptions: additionalOptions,
|
||||||
|
context: this.context,
|
||||||
});
|
});
|
||||||
|
|
||||||
return subquery.execute().then(response => {
|
return subquery.execute().then(response => {
|
||||||
@@ -671,6 +674,7 @@ _UnsafeRestQuery.prototype.replaceDontSelect = async function () {
|
|||||||
className: dontSelectValue.query.className,
|
className: dontSelectValue.query.className,
|
||||||
restWhere: dontSelectValue.query.where,
|
restWhere: dontSelectValue.query.where,
|
||||||
restOptions: additionalOptions,
|
restOptions: additionalOptions,
|
||||||
|
context: this.context,
|
||||||
});
|
});
|
||||||
|
|
||||||
return subquery.execute().then(response => {
|
return subquery.execute().then(response => {
|
||||||
@@ -860,6 +864,7 @@ _UnsafeRestQuery.prototype.handleInclude = function () {
|
|||||||
this.auth,
|
this.auth,
|
||||||
this.response,
|
this.response,
|
||||||
this.include[0],
|
this.include[0],
|
||||||
|
this.context,
|
||||||
this.restOptions
|
this.restOptions
|
||||||
);
|
);
|
||||||
if (pathResponse.then) {
|
if (pathResponse.then) {
|
||||||
@@ -946,7 +951,7 @@ _UnsafeRestQuery.prototype.handleAuthAdapters = async function () {
|
|||||||
// Adds included values to the response.
|
// Adds included values to the response.
|
||||||
// Path is a list of field names.
|
// Path is a list of field names.
|
||||||
// Returns a promise for an augmented response.
|
// Returns a promise for an augmented response.
|
||||||
function includePath(config, auth, response, path, restOptions = {}) {
|
function includePath(config, auth, response, path, context, restOptions = {}) {
|
||||||
var pointers = findPointers(response.results, path);
|
var pointers = findPointers(response.results, path);
|
||||||
if (pointers.length == 0) {
|
if (pointers.length == 0) {
|
||||||
return response;
|
return response;
|
||||||
@@ -1026,6 +1031,7 @@ function includePath(config, auth, response, path, restOptions = {}) {
|
|||||||
className,
|
className,
|
||||||
restWhere: where,
|
restWhere: where,
|
||||||
restOptions: includeRestOptions,
|
restOptions: includeRestOptions,
|
||||||
|
context: context,
|
||||||
});
|
});
|
||||||
return query.execute({ op: 'get' }).then(results => {
|
return query.execute({ op: 'get' }).then(results => {
|
||||||
results.className = className;
|
results.className = className;
|
||||||
|
|||||||
Reference in New Issue
Block a user