[parse] Adding original optional field to BeforeSaveRequest and overloading response.error (#23887)

* Missing request.original for Parse.Cloud

* Adding parameter to response.error function as it support 1 or 2 parameters

* restoring original state

* fixing cloud code response.error signature. Supporting 2 arguments

* Missing `original` optional field in BeforeSaveRequest.

* Testing `request.original` and the two possible formats of response.erro
This commit is contained in:
Saulo Tauil
2018-02-27 10:13:09 -08:00
committed by Andy
parent 37dc307d9e
commit 58bc7a9ca4
2 changed files with 27 additions and 3 deletions
+6 -3
View File
@@ -891,7 +891,8 @@ declare namespace Parse {
interface FunctionResponse {
success: (response: any) => void;
error: (response: any) => void;
error (code: number, response: any): void;
error (response: any): void;
}
interface Cookie {
@@ -912,7 +913,9 @@ declare namespace Parse {
interface AfterDeleteRequest extends TriggerRequest { }
interface BeforeDeleteRequest extends TriggerRequest { }
interface BeforeDeleteResponse extends FunctionResponse { }
interface BeforeSaveRequest extends TriggerRequest { }
interface BeforeSaveRequest extends TriggerRequest {
original?: Parse.Object;
}
interface BeforeSaveResponse extends FunctionResponse {
success: () => void;
}
@@ -1147,4 +1150,4 @@ declare module "parse/node" {
declare module "parse" {
import * as parse from "parse/node";
export = parse
}
}
+21
View File
@@ -385,6 +385,27 @@ function test_cloud_functions() {
// result
});
const CUSTOM_ERROR_INVALID_CONDITION = 1001
const CUSTOM_ERROR_IMMUTABLE_FIELD = 1002
Parse.Cloud.beforeSave('MyCustomClass', (request: Parse.Cloud.BeforeSaveRequest,
response: Parse.Cloud.BeforeSaveResponse) => {
if (request.object.isNew()) {
if (!request.object.has('immutable')) return response.error('Field immutable is required')
} else {
const original = request.original;
if (original == null) { // When the object is not new, request.original must be defined
return response.error(CUSTOM_ERROR_INVALID_CONDITION, 'Original must me defined for an existing object')
}
if (original.get('immutable') !== request.object.get('immutable')) {
return response.error(CUSTOM_ERROR_IMMUTABLE_FIELD, 'This field cannot be changed')
}
}
response.success()
});
Parse.Cloud.beforeFind('MyCustomClass', (request: Parse.Cloud.BeforeFindRequest) => {
let query = request.query; // the Parse.Query
let user = request.user; // the user