From 485f7bad379ba3021278e3cf8de0f2ad23bf6be4 Mon Sep 17 00:00:00 2001 From: SachaG <358832+SachaG@users.noreply.github.com> Date: Tue, 21 Aug 2018 19:22:38 +0900 Subject: [PATCH] Await for validation callbacks too; modify data in update mutator validation callback --- packages/vulcan-lib/lib/server/mutators.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/vulcan-lib/lib/server/mutators.js b/packages/vulcan-lib/lib/server/mutators.js index a0512d1c9..629f57852 100644 --- a/packages/vulcan-lib/lib/server/mutators.js +++ b/packages/vulcan-lib/lib/server/mutators.js @@ -58,10 +58,10 @@ export const createMutator = async ({ collection, document, data, currentUser, v const validationErrors = validateDocument(newDocument, collection, context); // run validation callbacks - newDocument = runCallbacks({ name: `${typeName.toLowerCase()}.create.validate`, iterator: newDocument, properties: { currentUser, validationErrors }}); - newDocument = runCallbacks({ name: `*.create.validate`, iterator: newDocument, properties: { currentUser, validationErrors }}); + newDocument = await runCallbacks({ name: `${typeName.toLowerCase()}.create.validate`, iterator: newDocument, properties: { currentUser, validationErrors }}); + newDocument = await runCallbacks({ name: `*.create.validate`, iterator: newDocument, properties: { currentUser, validationErrors }}); // OpenCRUD backwards compatibility - newDocument = runCallbacks(`${collectionName.toLowerCase()}.new.validate`, newDocument, currentUser, validationErrors); + newDocument = await runCallbacks(`${collectionName.toLowerCase()}.new.validate`, newDocument, currentUser, validationErrors); if (validationErrors.length) { const NewDocumentValidationError = createError('app.validation_error', {message: 'app.new_document_validation_error'}); @@ -176,10 +176,10 @@ export const updateMutator = async ({ collection, documentId, selector, data, se let validationErrors; validationErrors = validateData(data, document, collection, context); - runCallbacks({ name: `${typeName.toLowerCase()}.update.validate`, iterator: data, properties: { document, currentUser, validationErrors }}); - runCallbacks({ name: `*.update.validate`, iterator: data, properties: { document, currentUser, validationErrors }}); + data = await runCallbacks({ name: `${typeName.toLowerCase()}.update.validate`, iterator: data, properties: { document, currentUser, validationErrors }}); + data = await runCallbacks({ name: `*.update.validate`, iterator: data, properties: { document, currentUser, validationErrors }}); // OpenCRUD backwards compatibility - runCallbacks(`${collectionName.toLowerCase()}.edit.validate`, dataToModifier(data), document, currentUser, validationErrors); + data = modifierToData(await runCallbacks(`${collectionName.toLowerCase()}.edit.validate`, dataToModifier(data), document, currentUser, validationErrors)); if (validationErrors.length) { // eslint-disable-next-line no-console @@ -292,10 +292,10 @@ export const deleteMutator = async ({ collection, documentId, selector, currentU // if document is not trusted, run validation callbacks if (validate) { - document = runCallbacks({ name: `${typeName.toLowerCase()}.delete.validate`, iterator: document, properties: { currentUser }}); - document = runCallbacks({ name: `*.delete.validate`, iterator: document, properties: { currentUser }}); + document = await runCallbacks({ name: `${typeName.toLowerCase()}.delete.validate`, iterator: document, properties: { currentUser }}); + document = await runCallbacks({ name: `*.delete.validate`, iterator: document, properties: { currentUser }}); // OpenCRUD backwards compatibility - document = runCallbacks(`${collectionName.toLowerCase()}.remove.validate`, document, currentUser); + document = await runCallbacks(`${collectionName.toLowerCase()}.remove.validate`, document, currentUser); } // run onRemove step