mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-08-11 12:30:18 +00:00
[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:
Vendored
+6
-3
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user